MSSQL STUFF ( like group_concat at mysql )

-- MSSQL 2016. 7. 29. 05:31
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

보통 테이블을 SELECT하면 테이블에 존재하는 레코드 수만큼 반환을 하게 되는데, 때때로 반환한 레코드를 한 줄의 데이터로 변경할 경우가 있다.

예를들면,

one
two
three

테이블의 컬럼 데이터를 one, two, three로 반환하고 싶은 것이다.

이런 경우 MySQL에서는 GROUP_CONCAT(http://tiger5net.tistory.com/1059)을 사용하는데, MSSQL에서는 STUFF를 사용한다.


[C1] [C2]
one 1
two 2
three 3


위와 같은 테이블이 있다고 한다면 아래와 같이 쿼리를 작성할 수 있다.

SELECT
STUFF((
SELECT ',' + C1 + '|' + C2
FROM Test
ORDER BY C2
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM Test ;



결과)

one|1,two|2,three|3

posted by 어린왕자악꿍