연구개발/SQL2005
여러 로우의 값을 하나의 컬럼으로 바꾸는 방법
알 수 없는 사용자
2009. 5. 20. 19:47
CREATE TABLE test (GBN CHAR(1),VAL CHAR(3))
INSERT test VALUES('A','001')
INSERT test VALUES('A','002')
INSERT test VALUES('A','003')
INSERT test VALUES('A','004')
INSERT test VALUES('A','005')
INSERT test VALUES('A','011')
INSERT test VALUES('B','007')
INSERT test VALUES('B','004')
INSERT test VALUES('B','005')
INSERT test VALUES('B','010')
INSERT test VALUES('C','011')
INSERT test VALUES('C','001')
INSERT test VALUES('C','002')
INSERT test VALUES('C','003')
-------------------------------------------------------
SELECT DISTINCT GBN,
STUFF((SELECT ',' + VAL AS [text()]
FROM test b
WHERE b.GBN = a.GBN
ORDER BY VAL
FOR XML PATH('')),1,1,'') AS VAL
FROM test a
/*
GBN VAL
---- -----------------------------
A 001,002,003,004,005,011
B 004,005,007,010
C 001,002,003,011