DB/MSSQL

여러 행 컬럼 합치기 STUFF

JJJAEOoni 2023. 1. 12. 12:14
반응형

SQL Server에서 여러 행(Row)의 컬럼 값을 하나로 합치기 위해서는 STUFF 함수와 FOR XML PATH 구문을 사용한다.

오라클에서 XMLAGG, WM_CONCAT, LISTAGG 함수와 비슷한 기능을 수행한다.

 

SQL Server 2017 이상 버전을 사용한다면 STRING_AGG 함수를 사용하면 된다.

SELECT a.job
     , STUFF((SELECT ',' + ename
                FROM emp
               WHERE job = a.job
                 FOR XML PATH('')
	   ), 1, 1, '') AS enames
FROM emp AS a
GROUP BY a.job

STUFF() 함수는 문자열을 자리수 만큼 특정문자로 치환하고 문자열로 리턴한다.

XML로 리턴된 결과의 첫번재 문자 ','을 빈문자로 치환하고 문자열로 변환한다.

 

STUFF("문자열", "시작위치", "문자길이", "치환문자")

 

 

https://gent.tistory.com/344

반응형