IT/기타
Oracle SQL LISTAGG 함수로 행(row) 합치기
twofootdog
2021. 5. 28. 16:20
Oracle SQL을 작성하다 보면 특정 컬럼의 데이터 row를 1개의 문자열로 합쳐야 하는 경우가 존재한다.
그럴 경우 아래와 같이 ORACLE LISTAGG 함수를 이용해서 행을 합칠 수 있다.
만약 10, 20, 30 데이터 row로 이루어진 테이블이 있다고 가정하자(이 글에서는 테이블 대신 WITH 절을 사용할 것이다)
WITH TAB AS (
SELECT '10' COL FROM DUAL
UNION ALL
SELECT '20' COL FROM DUAL
UNION ALL
SELECT '30' COL FROM DUAL)
SELECT * FROM TAB;
3개의 ROW를 1개의 STRING으로 묶고 각 데이터 값을 ","로 구분하기 위해서는 아래와 같이 LISTAGG 함수를 사용해서 SQL을 작성하면 된다.
SQL :
WITH TAB AS (
SELECT '10' COL FROM DUAL
UNION ALL
SELECT '20' COL FROM DUAL
UNION ALL
SELECT '30' COL FROM DUAL)
SELECT LISTAGG(COL, ',') WITHIN GROUP (ORDER BY COL) FROM TAB;
결과 :