본문 바로가기

Database

[ORACLE] LISTAGG 여러 행을 하나의 컬럼으로 가져오기

 

11g 에서 추가. 10g 이하는 WM_CONCAT 함수 사용

(WM_CONCAT은 페이지 하단 Link 참고)

 

 

사용방법

SELECT LISTAGG(가져올컬럼, 구분자) WITHIN GROUP (ORDER BY 순서컬럼)
FROM TABLE_NM

 

 

 

가공할 쿼리 조회

SELECT DEPT_NM FROM HRM_DEPT

 

 

 

 

위와 같이 한 컬럼에 대한 여러 값을 합쳐 보여줘보자

SELECT LISTAGG(DEPT_NM, ',') WITHIN GROUP (ORDER BY DEPT_NM) AS DEPT_NM 
FROM HRM_DEPT

 

 

 

 

LISTTAG의 중복을 제외하기 - FROM절에서 SUBQUERY로 애초에 가지고 올 때 중복제거

SELECT LISTAGG (DEPT_NM, ',') WITHIN GROUP (ORDER BY DEPT_NM) AS DEPT_NM
  FROM (SELECT DISTINCT DEPT_NM FROM HRM_DEPT)

 

 

 

 

 

출처: https://aljjabaegi.tistory.com/144 [알짜배기 프로그래머]