728x90
여러행의 데이터를 하나의 컬럼으로 보여주고 싶을 때 LISTAGG 함수를 사용한다.. 오라클 11g에 추가된 함수라 10g이하는 WM_CONCAT 함수를 사용해야한다.
SELECT LISTAGG(여러행컬럼, 구분자) WITHIN GROUP (ORDER BY 순서컬럼) FROM TABLE_NAME
LISTAGG 인자에 가져올 컬럼과 가져온 컬럼을 구분 할 수 있는 구분자를 넣어주면 된다.
예시
여기서
USER_NAME을 한 컬럼에 출력하자.
LISTAGG(USER_NAME, ',')으로 표현했을 경우
홍길동,김길동,이길동으로 포현되며 마지막 이길동 뒤에 ','표시는 생략된다.
정렬기준컬럼은 1줄로 표현되는 데이터의 표현순서를 정해주는 것이다.
별도의 정렬기준 컬럼이 명시되어 있다면, 해당 컬럼명을 ORDER BY 뒷쪽에 표현하면 됩니다.
위 쿼리를 실행하면
이렇게 순번대로 이름이 하나의 컬럼에 출력된다.
난 서브쿼리로 이 함수를 사용했다.. 이 함수는 응용할 수 있는 방법이 다양한 것 같은데 난 아직 이해가 어렵다..
나중에 필요할 때 더 익혀야겠다.
쿼리는 아래 사이트를 참조했다.
참조: https://too612.tistory.com/496
'DB > Oracle' 카테고리의 다른 글
[Oracle]WITH절 사용법 및 예제(임시테이블) (0) | 2021.10.26 |
---|---|
[Oracle] 문자열 변환 (REPLACE 함수) 엔터, 탭 제거 (0) | 2021.10.26 |
[Oracle]테이블 및 데이터 복사하기(백업) (0) | 2021.10.14 |
[Oracle]REGEXP_SUBSTR-콤마로 분리된 문자열을 여러 행으로 변환하기 (0) | 2021.10.06 |
[Oracle] REGEXP_SUBSTR-콤마로 분리된 값을 컬럼으로 만들기 (0) | 2021.10.06 |
댓글