그룹핑 하여 행단위로 모아, 콤마로 구분하여 볼 수 있는 방법이 2가지 있다.
예전 WM_CONCAT 함수는 간단하게 사용할 수 있지만 정렬순서가 자기 마음대로 였다.
아래의 예를 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT WM_CONCAT(A.NAME) AS NAMES FROM ( SELECT 101 AS KEY, 'A1' AS NAME FROM DUAL UNION SELECT 101, 'B2' FROM DUAL UNION SELECT 101, 'C3' FROM DUAL UNION SELECT 102, 'D4' FROM DUAL UNION SELECT 102, 'E5' FROM DUAL ) A GROUP BY A.KEY | cs |
- 쿼리를 실행하면 다음과 같다.
11G 이상부터 사용할 수 있는 LISTAGG 함수는 Order와 Delimeter를 지정 할 수 있어서 좀 더 자유롭게 사용 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT LISTAGG(A.NAME, ':') WITHIN GROUP(ORDER BY A.NAME) AS NAMES FROM ( SELECT 101 AS KEY, 'A1' AS NAME FROM DUAL UNION SELECT 101, 'B2' FROM DUAL UNION SELECT 101, 'C3' FROM DUAL UNION SELECT 102, 'D4' FROM DUAL UNION SELECT 102, 'E5' FROM DUAL ) A GROUP BY A.KEY | cs |
- 쿼리를 실행하면 다음과 같다.
위의 그림처럼 구분자와 정렬이 적용된 결과를 볼 수 있다.
LISTAGG를 이용하여, 행단위 그룹핑을 조회해 보자.
'Oracle' 카테고리의 다른 글
오라클 트리 쿼리 START WITH, CONNECT BY PRIOR (0) | 2024.02.22 |
---|---|
오라클 merge into 간단설명 및 예제 (0) | 2024.02.16 |
오라클 partition by 간단 설명 및 예제 (1) | 2024.02.16 |
오라클 with 간단 설명 및 예제 (With... Select) (1) | 2024.02.16 |
오라클 ora-01846 에러 : NEXT_DAY 함수 사용시 처리방법 (0) | 2024.02.16 |