oracle / 컬럼의 값을 가로로 표시하기 / WM_CONCAT / Listagg / 옆으로 표시

2016. 1. 5. 15:36database/oracle


컬럼의 값들을 한줄 (가로) 로 출력하는 방법이다.

 

 

oracle의 쿼리의 값을 간혹 가로(옆으로)로 표시해야 할 경우가 생긴다

 

test 테이블이 있다.

 seq

 title

 1  aaa
 2  bbb
 3  ccc

 



 

SELECT title

FROM test

를 실행하면

 title

 aaa
 bbb
 ccc

 

로 표현된다.

 

oracle 10g 부터 지원하는 WM_CONCAT함수가 있다.

비공식 함수이다.

구분자가 무조건 콤마(,)이며 그렇기 때문에 데이터 중 콤마(,) 가 존재하지 않을 때 사용해야 한다.

또한 정렬이 안된다.

 

SELECT WM_CONCAT(title)

FROM test

를 실행하면

 title

 aaa,bbb,ccc

 

로 표시할 수 있다.

 





2개이상 사용시 order by를 하지 않으면 순서가 섞일 수 있다


조금 더 안정적인 함수는

listagg 가 있다

oracle 11g 부터 사용가능하다.

 

select listagg(title, ',') within group (order by title) from test