본문 바로가기
프로그래밍/DB

[MS-SQL] 세로 데이터 가로로 한 컬럼에 담기 - FOR XML PATH

by [바가지] 2017. 8. 29.
반응형

여러 줄의 데이터를 한 컬럼 안에 담고 싶을 때 사용 됩니다


예를 들어 회의정보MST 테이블이 있고, 회의 참석자 정보 테이블이 있습니다

그런데 회의 참석자 정보 테이블에는 한 레코드에 한 사람정보가 담겨 있을 경우

이 참석자 정보들을 한 컬럼에 구분자로 하여 모두 보여 주고 싶을 때 사용 됩니다



WITH T_TABLE01 AS

(SELECT '1' COL1, '가' COL2

 UNION

 SELECT '1' COL1, '나' COL2  

 UNION

 SELECT '2' COL1, '다' COL2  

)


SELECT  A.COL1

     , (SELECT ', ' + A1.COL2

        FROM T_TABLE01 A1

        WHERE (A1.COL1 = A.COL1)

        FOR XML PATH ('')) COL2_1

     , STUFF((SELECT ', ' + A1.COL2

 FROM T_TABLE01 A1

 WHERE (A1.COL1 = A.COL1)

 FOR XML PATH ('')),1,1,'') COL2_2

FROM T_TABLE01 A

GROUP BY A.COL1



결과 - 앞의 콤마를 없애기 위해 STUFF 함수가 사용 되었습니다


mssql 쿼리 결과


반응형