중복자료 제거, 한줄표시 1 2 1,230

by 동동동 [SQL Query] [2017.05.02 11:39:54]


안녕하세요...중복자료가 제거 후 한줄로 표시하고 싶은데..

이런 방법 말고 또 다른 방법이 있을까요??

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 ('사과', '배') )
;

 

 

by 마농 [2017.05.02 13:16:40]

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 ('사과', '배')
;

 


by 동동동 [2017.05.02 13:31:40]

답글 감사드립니다...^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입