Oracle SQL을 작성하다 보면 특정 컬럼의 데이터 row를 1개의 문자열로 합쳐야 하는 경우가 존재한다.
그럴 경우 아래와 같이 ORACLE LISTAGG 함수를 이용해서 행을 합칠 수 있다.
만약 10, 20, 30 데이터 row로 이루어진 테이블이 있다고 가정하자(이 글에서는 테이블 대신 WITH 절을 사용할 것이다)
WITH TAB AS (
SELECT '10' COL FROM DUAL
UNION ALL
SELECT '20' COL FROM DUAL
UNION ALL
SELECT '30' COL FROM DUAL)
SELECT * FROM TAB;
3개의 ROW를 1개의 STRING으로 묶고 각 데이터 값을 ","로 구분하기 위해서는 아래와 같이 LISTAGG 함수를 사용해서 SQL을 작성하면 된다.
SQL :
WITH TAB AS (
SELECT '10' COL FROM DUAL
UNION ALL
SELECT '20' COL FROM DUAL
UNION ALL
SELECT '30' COL FROM DUAL)
SELECT LISTAGG(COL, ',') WITHIN GROUP (ORDER BY COL) FROM TAB;
결과 :
참고자료
'IT > 기타' 카테고리의 다른 글
ORACLE BLOB 데이터 조회 (0) | 2022.03.03 |
---|---|
Oracle SQL 특정 문자 기준으로 문자열 분리하기(행으로 분리) (0) | 2021.05.26 |
[에러 해결]제니퍼가 설정된 WAS(Tomcat)에 배포된 어플리케이션의 인코딩이 깨지는 문제 (0) | 2021.02.05 |
npm install 시 npm ERR! cb.apply is not a function 에러 해결방법 (1) | 2021.01.21 |
Oracle 테이블 컬럼 정보 조회 쿼리(컬럼명, PK, FK, Nullable) (1) | 2020.11.20 |
댓글