는,이 시도주고 도움을 줄 수 있음을 보인다 (SQL Server 2008에 사용) :
을
DECLARE @YourTable table(MemberID int, SchemeName varchar(10), BenefitID int, BenefitAmount int)
INSERT INTO @YourTable VALUES (10,'ABC' ,1,10000)
INSERT INTO @YourTable VALUES (10,'ABC' ,1,2000)
INSERT INTO @YourTable VALUES (10,'ABC' ,2,5000)
INSERT INTO @YourTable VALUES (10,'A.B.C',3,11000)
INSERT INTO @YourTable VALUES (11,'ABC' ,1,10000)
INSERT INTO @YourTable VALUES (11,'ABC' ,1,2000)
INSERT INTO @YourTable VALUES (11,'ABC' ,2,5000)
INSERT INTO @YourTable VALUES (11,'A.B.C',3,11000)
INSERT INTO @YourTable VALUES (10,'mnp',3,11000)
INSERT INTO @YourTable VALUES (11,'mnp' ,1,10000)
INSERT INTO @YourTable VALUES (11,'mnp' ,1,2000)
INSERT INTO @YourTable VALUES (11,'mnp' ,2,5000)
INSERT INTO @YourTable VALUES (11,'mnp',3,11000)
SELECT
MemberID, REPLACE(SchemeName,'.','') AS SchemeName
,SUM(CASE WHEN BenefitID=1 THEN BenefitAmount ELSE 0 END) AS B1
,SUM(CASE WHEN BenefitID=2 THEN BenefitAmount ELSE 0 END) AS B2
,SUM(CASE WHEN BenefitID=3 THEN BenefitAmount ELSE 0 END) AS B3
FROM @YourTable
GROUP BY MemberID, REPLACE(SchemeName,'.','')
ORDER BY MemberID, REPLACE(SchemeName,'.','')
출력 :
MemberID SchemeName B1 B2 B3
----------- ----------- ----------- ----------- -----------
10 ABC 12000 5000 11000
10 mnp 0 0 11000
11 ABC 12000 5000 11000
11 mnp 12000 5000 11000
(4 row(s) affected)
얼마나 많은 BenefitID 값을 사용할 수 있습니까? 그들은 모든 MemberID와 SchemeName에서 동일합니까? –
@ Karl, 귀하의 의견을 바탕으로 두 가지 문제가있는 것 같습니다 : 열을 열로 결합하고 다양한 텍스트 필드를 기반으로 행을 결합하는 방법. 다양한 텍스트를 기반으로 행을 결합하는 것이 어렵습니다. 더 자세히 설명하지 않으십시오. 어떤 알고리즘이 결코 100 % 정확하지 않기 때문에, 상대방이 다루는 것에 대한 좋은 예와 일치하는만큼 받아 들일 수있는 것을 제공하십시오. 일치하는 알고리즘을 알고 있다면 (코드가 아닌) 아이디어 일뿐입니다. 그렇지 않으면 질문에 계속할 정보가별로 없기 때문에 더 많은 도움을 얻지 못할 것입니다. –