LISTAGG()
여러행의 데이터를 하나의 행에 가로로 출력하기
SELECT
LISTAGG(필드명, 구분자)
WITHIN GROUP ( ORDER BY 정렬기준필드 ASC 또는 DESC)
FROM 테이블
출처: https://dololak.tistory.com/809 [코끼리를 냉장고에 넣는 방법]
LISTAGG : 합칠 필드명과, 합칠 때 사용할 구분자를 지정
WITHIN GROUP : 합칠때 정렬 기준
LISTAGG함수 실행 결과에서 중복 제거하기
5번행의 SALESMAN의 경우에는 네 개의 중복된 부서번호가 있습니다. 안타깝게도 LISTAGG는 DISTINCT를 사용할 수 없기 때문에 다른 방법이 필요합니다.
중복 해결은 의외로 간단한데 중복이 제거된 상태의 뷰를 만들고 그 뷰를 가지고 LISTAGG를 사용하는 것 입니다.
SELECT JOB,
LISTAGG(DEPTNO, ', ')
WITHIN GROUP ( ORDER BY DEPTNO)
AS DEPTS
FROM (
SELECT JOB, DEPTNO
FROM EMP
GROUP BY JOB, DEPTNO
) A
GROUP BY JOB;
서브쿼리에서 이미 DEPTNO의 중복을 제거한 상태에서 LISTAGG를 사용하기 때문에 중복이 제거되었습니다.
출처: https://dololak.tistory.com/809 [코끼리를 냉장고에 넣는 방법]
[참조]
https://dololak.tistory.com/809
반응형
'차근차근 > Oracle' 카테고리의 다른 글
ROWID (0) | 2022.03.25 |
---|---|
오라클 관리자(system, sys) 계정 비밀번호 찾기/변경 & 윈도우 서버에서 oracle서버 교체작업 (0) | 2022.02.26 |
인터넷이 안되는 환경에서 오렌지 설치하기 (0) | 2022.01.04 |
IN, EXISTS (0) | 2022.01.03 |
NVL , NVL2, LNNVL (0) | 2021.12.30 |