728x90
SQL Server 2017 이상의 버전에서는 여러 행의 컬럼 값을 하나의 컬럼으로 합칠 때에는 STRING_AGG() 함수를 사용하면 된다. 오라클 SQL의 LISTAGG() 함수와 비슷한 기능을 수행한다.
SQL Server 2017 이전 버전을 사용한다면 FOR XML PATH 서브 쿼리를 사용해야 한다.
[MSSQL] 여러 행의 컬럼을 합치는 방법 (STUFF, FOR XML PATH)
STRING_AGG 함수는 GROUP BY 절과 함께 사용해야 한다. ORDER BY 절을 사용하여 정렬이 가능하며 ORDER BY 절은 생략할 수 있다.
STRING_AGG("합칠컬럼명", "구분자") WITHIN GROUP(ORDER BY "컬럼명")
| 기본 사용법
SELECT job
, STRING_AGG(ename, ',') enames
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
GROUP BY job
| 컬럼 값을 정렬하여 합치는 방법
SELECT job
, STRING_AGG(ename, ',') WITHIN GROUP(ORDER BY ename) enames
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
GROUP BY job
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] CHARINDEX 함수, 특정 문자 찾기 (0) | 2022.04.11 |
---|---|
[MSSQL] STRING_ESCAPE 함수 사용법 (0) | 2022.04.11 |
[MSSQL] 여러 행의 컬럼을 합치는 방법 (0) | 2022.04.11 |
[MSSQL] PIVOT 함수, 행을 열로 바꾸기 (0) | 2022.04.11 |
[MSSQL] STRING_SPLIT 함수, 구분자로 자르기 (0) | 2022.04.11 |
댓글