안녕하세요...중복자료가 제거 후 한줄로 표시하고 싶은데..
이런 방법 말고 또 다른 방법이 있을까요??
WITH T1 AS ( SELECT '사과' COD FROM DUAL UNION ALL SELECT '배' COD FROM DUAL UNION ALL SELECT '사과' COD FROM DUAL UNION ALL SELECT '딸기' COD FROM DUAL ) SELECT LISTAGG(COD, ',') WITHIN GROUP(ORDER BY COD) FROM (SELECT DISTINCT COD FROM T1 WHERE COD IN ('사과', '배') ) ;
wm_concat 는 Distinct 기능을 제공합니다.
아쉽게도 Listagg 에는 Distinct 기능이 없습니다.
정규식을 이용하면 인라인뷰를 줄일 수 있겠네요.
참고로, wm_concat 에는 정렬 기능이 없습니다.
각각 조금씩 아쉬운 부분이 있네요.
SELECT wm_concat(DISTINCT cod) v1 , REGEXP_REPLACE( LISTAGG(cod, ',') WITHIN GROUP(ORDER BY cod) , '([^,]+)(,\1)+' , '\1' ) v2 FROM t1 WHERE cod IN ('사과', '배') ;