쿼리 질문입니다. 1 3 1,544

by 무지버기 [SQL Query] [2017.02.23 10:34:57]


다음과 같은 데이타가 있을때요

'TEXT' 컬럼의 중복된 데이타를 없애고 출력하고 싶습니다.

 

    SELECT 'A' 구분,'경기#경기#전남#서울' TXET FROM DUAL UNION ALL
    SELECT 'B' 구분,'경기#경기'           TXET FROM DUAL UNION ALL
    SELECT 'C' 구분,'경기#경기#인천#광주' TXET FROM DUAL UNION ALL
    SELECT 'D' 구분,'경기#전남#전남'      TXET FROM DUAL UNION ALL
    SELECT 'E' 구분,'경기#강원#울산#서울#광주#인천' TXET FROM DUAL UNION ALL
    SELECT 'F' 구분,'인천' TXET FROM DUAL


== 결과값 ===

A    경기#전남#서울
B    경기
C    경기#인천#광주
D    경기#전남
E    경기#강원#울산#서울#광주#인천
F    인천

by jkson [2017.02.23 11:05:26]
WITH T AS
(   
SELECT 'A' 구분,'경기#경기#전남#서울' TEXT FROM DUAL UNION ALL
SELECT 'B' 구분,'경기#경기'           TEXT FROM DUAL UNION ALL
SELECT 'C' 구분,'경기#경기#인천#광주' TEXT FROM DUAL UNION ALL
SELECT 'D' 구분,'경기#전남#전남'      TEXT FROM DUAL UNION ALL
SELECT 'E' 구분,'경기#강원#울산#서울#광주#인천' TEXT FROM DUAL UNION ALL
SELECT 'F' 구분,'인천' TEXT FROM DUAL
)                     
SELECT 구분, REGEXP_REPLACE(TEXT,'([^#]+)(#\1)+','\1') TEXT FROM T

 


by 무지버기 [2017.02.23 13:04:13]

오..감사합니다.^^

근데 한가지 제가 놓친 케이스가 있네요.ㅠㅠ

SELECT 'C' 구분,'경기#경기#인천#광주#경기' TEXT FROM DUAL 

"경기"가 연속해서 안올수도 있습니다.

 


by 마농 [2017.02.24 08:48:06]
WITH t AS
(
SELECT 'A' 구분, '경기#경기#전남#서울' text FROM dual
UNION ALL SELECT 'B', '경기#경기'                     FROM dual
UNION ALL SELECT 'C', '경기#경기#인천#광주'           FROM dual
UNION ALL SELECT 'D', '경기#전남#전남'                FROM dual
UNION ALL SELECT 'E', '경기#강원#울산#서울#광주#인천' FROM dual
UNION ALL SELECT 'F', '인천'                          FROM dual
UNION ALL SELECT 'G', '경기#경기#인천#광주#경기'      FROM dual
)
SELECT 구분
     , LISTAGG(text, '#') WITHIN GROUP(ORDER BY lv) text
  FROM (SELECT 구분
             , REGEXP_SUBSTR(text, '[^#]+', 1, lv) text
             , MIN(lv) lv
          FROM t
             , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9)
         WHERE lv <= REGEXP_COUNT(text, '[^#]+')
         GROUP BY 구분
             , REGEXP_SUBSTR(text, '[^#]+', 1, lv)
        )
 GROUP BY 구분
 ORDER BY 구분
;

 

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