💻 IT/📌 DataBase

[DB/SQL] ORACLE LISTAGG 함수 사용법 정리 | 행을 열로 바꾸기

GODSU 2024. 9. 1. 14:47
반응형

 

 

오늘은 여러 행의 칼럼을 하나의 값으로 합칠 수 있는 LISTAGG 함수를 정리해 보겠습니다.

 

LISTAGG 함수

LISTAGG([합칠 칼럼명], [구분자]) WITHIN GROUP(ORDER BY [정렬 칼럼명])

lISTaGG함수는 그룹함수이기 때문에 GROUP BY와 PARTITION BY절과 같이 사용해야 한다.

 

 

예제

[테스트 데이터]

EMP_TABLE 테이블

 

 

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절을 이용하면 조회된 결과행의 개수는 유지하며 합쳐진 칼럼을 그대로 볼 수 있다.

 

 

감사합니다.

반응형