[MSSQL] 여러 행의 컬럼을 합치는 방법 (STUFF, FOR XML PATH)

SQL Server에서 여러 행(Row)의 컬럼 값을 하나로 합치기 위해서는 STUFF 함수와 FOR XML PATH 구문을 사용하면 된다. 오라클 SQL에서 XMLAGG, WM_CONCAT, LISTAGG 함수와 비슷한 기능을 수행한다.

 

MSSQL 여러행 컬럼 합치기

 

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

[MSSQL] 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("문자열", "시작위치", "문자길이", "치환문자")

 

사용 예제

 

 

 

서브쿼리로 데이터를 조회했기 때문에 GROUP BY를 사용하지 않아도 결과가 출력된다.

 

사용_예제_쿼리.txt
0.01MB

 

 

댓글

Designed by JB FACTORY