반응형
오늘은 여러 행의 칼럼을 하나의 값으로 합칠 수 있는 LISTAGG 함수를 정리해 보겠습니다.
LISTAGG 함수
LISTAGG([합칠 칼럼명], [구분자]) WITHIN GROUP(ORDER BY [정렬 칼럼명])
lISTaGG함수는 그룹함수이기 때문에 GROUP BY와 PARTITION BY절과 같이 사용해야 한다.
예제
[테스트 데이터]
1. LISTAGG 함수로 칼럼 합치기
SELECT
LISTAGG(EMP_NAME, ',') WITHIN GROUP(ORDER BY AGE) AS EMP_NAME
FROM EMP_TABLE
WHERE POSITION = '사원'
쿼리를 확인해 보면 사원인 직책(POSITION)만 잡아서 직원이름을 합친 결과를 볼 수 있다.
2. GROUP BY 절을 이용하여 LISTAGG 사용
SELECT
POSITION
,LISTAGG(EMP_NAME, ',') WITHIN GROUP(ORDER BY AGE) AS EMP_NAME
FROM EMP_TABLE
GROUP BY POSITION
쿼리 결과를 확인해 보면, GROUP BY절로 직책별로 그룹핑한 후 직원 이름들을 한 행으로 출력 가능하다.
3. PATITION BY 절을 사용하여 LISTAGG 사용
SELECT
POSITION
,LISTAGG(EMP_NAME, ',') WITHIN GROUP(ORDER BY AGE) OVER (PARTITION BY POSITION) AS EMP_NAME
FROM EMP_TABLE
PARTITION BY절을 이용하면 조회된 결과행의 개수는 유지하며 합쳐진 칼럼을 그대로 볼 수 있다.
감사합니다.
반응형
'💻 IT > 📌 DataBase' 카테고리의 다른 글
[DB/SQL] ORACLE LAG,LEAD 함수 사용법 정리 (이전, 다음값) (1) | 2024.11.12 |
---|---|
[DB/SQL] 날짜, 시간 형식 표현하는 법 | TO_CHAR로 표현 (3) | 2024.09.04 |
[DB/SQL] ORACLE NVL 함수 사용법 정리 (0) | 2024.08.30 |
[DB/SQL] ORACLE WITH절 사용법 정리 (0) | 2024.08.29 |
[DB/SQL] 오라클 PARTITION BY 정리 | 집계함수 사용 | 순위함수 사용 (6) | 2024.08.28 |