Studying/SQL
LISTAGG 함수
YOO'sssss
2023. 7. 5. 10:34
여러행을 하나의 컬럼으로 가져오고 싶을 때 사용
특정 컬럼의 내용들을 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를 사용