이전 오라클 버전에서는 WM_CONCATE 함수가 지원되어
관련 함수안에 DISTINCT함수를 적용하여으나 LISTAGG 함수는
중복제거 기능이 없는 것 같습니다.
단일칼럼의 결과면 중복을 제거한 후 인라인뷰를 사용면 되지만
두개이상의 칼럼인 경우 방법을 못찾겠습니다. --;
관련 쿼리는 아래와 같습니다.
WITH TMP_TABLE
AS
(
SELECT 'A1' KND1, 'B1' KND2 FROM DUAL
UNION
SELECT 'A1' KND1, 'B2' KND2 FROM DUAL
UNION
SELECT 'A1' KND1, 'B2' KND2 FROM DUAL
UNION
SELECT 'A1' KND1, 'B3' KND2 FROM DUAL
)
SELECT LISTAGG(KND1,',') WITHIN GROUP (ORDER BY KND1) KND1
,LISTAGG(KND2,',') WITHIN GROUP (ORDER BY KND2) KND2
FROM TMP_TABLE
원하는 결과 값
KND1 칼럼
A1,A1,A1 (X) -> A1 (O)
|