Oracle LISTAGG()
LISTAGG()은 오라클 11g부터 지원하는 내장 함수입니다.
컬럼(아래)으로 나열되는 데이터를 로우(가로)로 나열하고 싶은 경우에 사용합니다.
즉, 리스트 형태로 나오던 데이터를 그루핑 할 때 유용합니다.
그럼 구체적으로 사용 방법을 알아보겠습니다.
기본 형태
기본적으로 LISTAGG 인자는 합칠 컬럼명과 구분자입니다.
구분자는 단순히 구분하기 위한 목적으로 아무 문자나 사용해도 됩니다.
1
2
3
|
SELECT LISTAGG(대상컬럼, 구분자) WITHIN GROUP (ORDER BY 정렬기준컬럼)
FROM 테이블
;
|
cs |
SELECT 절에 LISTAGG 외에 컬럼을 표시하면 합칠 때 기준이 됩니다.
만약 LISTAGG만 사용한다면 모든 이름이 하나의 컬럼으로 표시됩니다.
예시 데이터
테이블 명: MEMBER_INFO
함수 사용법 예시1
모든 멤버를 하나의 컬럼으로 표시하기
1
2
3
|
SELECT LISTAGG(MEMBER_NAME, ',') WITHIN GROUP (ORDER BY MEMBER_LEVEL) AS MEMBER_LIST
FROM MEMBER_INFO
;
|
cs |
함수 사용법 예시2
같은 멤버십 등급끼리 하나의 컬럼으로 표시하기
1
2
3
4
|
SELECT MEMBER_LEVEL
, LISTAGG(MEMBER_NAME, ',') WITHIN GROUP (ORDER BY MEMBER_LEVEL) AS MEMBER_LIST
FROM MEMBER_INFO
;
|
cs |
함수 사용법 예시3
같은 나이대 별로 하나의 컬럼으로 표시하기
1
2
3
4
|
SELECT AGE_TYPE
, LISTAGG(MEMBER_NAME, ',') WITHIN GROUP (ORDER BY MEMBER_LEVEL) AS MEMBER_LIST
FROM MEMBER_INFO
;
|
cs |
* 만약 오라클 11g 이전 버전을 사용하신다면 WM_CONCAT 함수를 사용하시면 됩니다.
'[개발] Programming > Database' 카테고리의 다른 글
[MySQL] INT IDENTITY(N, M) - 시퀀스 함수 (0) | 2020.08.17 |
---|---|
오라클, 컬럼 명으로 테이블 찾는 방법 (ALL_TAB_COLUMNS) (0) | 2019.10.31 |
ora-01481: 숫자 형식 모델이 부적합합니다 (0) | 2019.08.27 |
오라클, 숫자에 콤마 넣는 방법 (TO_CHAR) (0) | 2019.08.11 |
오라클, VARCHAR2 날짜를 원하는 포멧으로 변경하는 방법 (0) | 2019.08.09 |
댓글