본문 바로가기

SQL(XML)

오라클 그룹화 한줄로 만들기

이름 권한
A 관리자
A 일반사용자
A 유령사용자

검색이 이렇게 나올때, 한줄로 만들고 싶다면,

LISTAGG 함수를 사용한다.

 

LISTAGG(권한 , ',') WITHIN GROUP ( ORDER BY 권한)
이름 권한
A 관리자,일반사용자,유령사용자

만약 그룹화시 중복이 나온다면 REGEXP_REPLACE 함수를 사용한다.

이름 권한
A 관리자,관리자,일반사용자
REGEXP_REPLACE(LISTAGG(권한 , ',') WITHIN GROUP ( ORDER BY 권한), '([^,]+)(,\1)+', '\1') AS 권한
이름  권한
A 관리자, 일반사용자

 

만약 REGEXP_REPLACE 함수를 사용해도 중복제거가 안된다면 LISTAGG(권한 , ',') -> ',' 부분에 공백이 있는지 없는지 잘 확인하자 이것땜에 2시간 날려먹었다. 신난다.

'SQL(XML)' 카테고리의 다른 글

오라클 List 값 MERGE시키기  (0) 2021.11.17
SELECT 컬럼 순서대로 가져오기  (0) 2021.07.29