조회를할떄 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를 한줄에 모아 조회하였습니다.
'DB\SQL' 카테고리의 다른 글
[Oracle]오라클 데이터타입 변경(TO_CHAR,TO_NUMBER,TO_DATE) (0) | 2019.03.11 |
---|---|
[Oracle]오라클 AS별칭(Alias) 숫자로 주기 (0) | 2019.03.04 |
[Oracle]조회결과 중복제거(DISTINCT) (0) | 2019.02.27 |
[Oracle]오라클 INSERT시 자동채번(MAX+1) (4) | 2019.02.20 |
[Oracle]오라클 조회 순번매기기(ROWNUM,ROW_NUMBER) (0) | 2019.02.19 |