[오라클 SQL] LISTAGG 중복제거 하는 방법(정규식)
- Database(데이터베이스)/Oracle
- 2019. 10. 19. 01:00
안녕하세요.
오늘은 오라클 SQL에서 LISTAGG 사용시, 중복된 데에터를 제거하는 방법에 대해서 알려드리고자 합니다.
정규식을 이용해서 중복 제거를 할 수 있기 때문에, 해당 내용을 숙지하시면 나중에 LISTAGG 사용시 매우 유용하게 사용하실 수 있는 문법이 될 거라 생각합니다.
아래 STUDENT 테이블이 있습니다.
STUDET 테이블
위에 있는 STUDENT 테이블에서 LISTAGG를 통해서 NAME 컬럼을 하나의 행으로 LISTAGG를 이용해서 조회해 보도록 하겠습니다.
LISTAGG 이용하여 NAME 조회하기
1 2 3 |
SELECT LISTAGG (stu.NAME, ',') WITHIN GROUP (ORDER BY GRADE) AS NAME FROM WIN.STUDENT stu WHERE 1 = 1 |
실행 결과
LISTAGG를 이용해서 NAME들을 조회해 보니까 현재 “범범조조” 라는 사람이 3번 중복되어서 조회된 것을 확인하실 수 있습니다.
그럼 이제 이 중북된 데이터를 정규식을 이용해서 제거해 보도록 하겠습니다.
LISTAGG 중복 제거
1 2 3 |
SELECT REGEXP_REPLACE(LISTAGG (stu.NAME, ',') WITHIN GROUP (ORDER BY GRADE), '([^,]+)(,\1)+', '\1') AS NAME FROM WIN.STUDENT stu WHERE 1 = 1 |
실행 결과
위와 같이 중복된 데이터가 지워지고, 중복 없이 데이터가 알맞게 조회된 것을 확인하실 수 있습니다.
감사합니다.^^
728x90
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 PL/SQL] 사용자 정의 함수 생성 및 호출 방법 (0) | 2019.11.17 |
---|---|
[오라클 PL/SQL] 오라클 PL/SQL 반복문 사용 방법 예제 (0) | 2019.11.15 |
[오라클 SQL] 오라클 HAVING 절 사용 방법 (0) | 2019.10.16 |
[오라클 SQL] 오라클 GROUP BY 절 (0) | 2019.10.15 |
[오라클 SQL] 오라클에서 문자열 연결하는 방법 (0) | 2019.10.14 |
이 글을 공유하기