오라클 LISTAGG, 중복제거 하는 방법

이서진화가 - 일상 블로그
WITH TBL_TEST AS (
    SELECT '1' AS IDX, 'test' AS COL FROM DUAL UNION ALL
    SELECT '1', 'test'  FROM DUAL UNION ALL 
    SELECT '2', 'xx'  FROM DUAL UNION ALL
    SELECT '2', 'yy'  FROM DUAL UNION ALL
    SELECT '3', 'zzz'  FROM DUAL UNION ALL
    SELECT '3', 'zzz'  FROM DUAL UNION ALL
    SELECT '3', 'z'  FROM DUAL
)
SELECT A.IDX
     , REGEXP_REPLACE(LISTAGG(A.COL, ',') WITHIN GROUP (ORDER BY A.IDX), '([^,]+)(,\1)+', '\1') AS COL
FROM TBL_TEST A
WHERE 1 = 1
GROUP BY A.IDX
;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다