조회를할떄 GROUP BY 를 사용하여 그룹핑을 할때가 많습니다.
이때 값이달라 그룹지어지지 않은 행의 데이터를 한줄에 모아서 보여주고 싶을때 LISTAGG함수를 사용 할 수 있습니다.
LISTAGG는 오라클11g부터 생겼습니다.
LISTAGG
단골 테스트 테이블인 COUNTRIES 테이블입니다.
REGION_ID와 COUNTRY_NAME을 그룹지어 조회해 보겠습니다.
SELECT REGION_ID,COUNTRY_NAME FROM COUNTRIES GROUP BY REGION_ID,COUNTRY_NAME ORDER BY REGION_ID | cs |
REGION_ID가 일치하는것이 많지만 COUNTRY_NAME 값이 달라 그룹으로 묶이지않습니다.
이때, REGION_ID를 그룹핑하고 COUNTRY_NAME을 한줄에 몰아세우고싶을때, LISTAGG를 사용 할 수 있습니다.
LISTAGG (하나로합칠 컬럼, '컬럼값 사이 구분문자') WITHIN GROUP(ORDER BY 정렬컬럼)
SELECT REGION_ID,LISTAGG(COUNTRY_NAME,',') WITHIN GROUP(ORDER BY COUNTRY_NAME) FROM COUNTRIES GROUP BY REGION_ID ORDER BY REGION_ID | cs |
그룹되지 않던 COUNTRY_NAME를 한줄에 모아 조회하였습니다.