본문 바로가기
  • [성공하는 개발자] - Developer
DataBase/MSSQL

[MSSQL] 여러 행의 컬럼을 합치는 방법

by Sein-JH 2022. 4. 11.
728x90

 

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

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

 

참고 : https://gent.tistory.com/344?category=874679

댓글