본문 바로가기

연구개발/SQL2005

여러 로우의 값을 하나의 컬럼으로 바꾸는 방법

728x90
반응형

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
728x90
반응형