여러행을 하나의 컬럼으로 가져오고 싶을 때 사용
특정 컬럼의 내용들을 1개 셀 안에 나열하고 싶을 때 LISTAGG 함수를 사용
(1) 개별 컬럼에 대하여 : LISTAGG
SELECT LISTAGG(컬럼이름B, '구분문자') WITHIN GROUP(ORDER BY 정렬기준컬럼이름Z) FROM 테이블이름;
- 컬럼이름B : 데이터가 나열될 컬럼
- '구분문자' : 나열된 데이터 사이를 구분할 문자 (*입력하지 않으면 구분 없이 연속으로 붙어 나열됩니다)
- 정렬기준컬럼이름Z : 컬럼B의 데이터가 나열될 때 정렬 기준이 될 또다른 컬럼. 기본적으로 오름차순 정렬되며, 내림차순으로 정렬하려면 컬럼이름Z 뒤에 desc를 뒤에 붙여 줍니다.
이 정렬기준 Z를 설정해 주지 않으면 오류(ORA-30491)가 발생합니다.
(2) GROUP BY와 함께 LISTAGG 사용
SELECT 컬럼이름A, LISTAGG(컬럼이름B, '구분문자') WITHIN GROUP(ORDER BY 정렬기준컬럼이름Z) FROM 테이블이름 GROUP BY 컬럼이름A;
그룹별로 나눈 다음 LISTAGG를 사용
'Studying > SQL' 카테고리의 다른 글
[Oracle & Tibero] 기존 PK 있는 테이블 컬럼 추가(PK, NOT NULL) (0) | 2023.07.24 |
---|---|
[MyBatis] #{ } 와 ${ } 개념과 차이점 (0) | 2023.07.17 |
Merge (0) | 2023.06.11 |
데이터 타입 (0) | 2023.05.12 |
파티셔닝(Partitioning) (0) | 2023.05.11 |