재유's

[OracleSQL] 열 데이터를 행으로 표현하기 본문

IT Story/: : Oracle

[OracleSQL] 열 데이터를 행으로 표현하기

Stella_NY 2017. 5. 1. 15:02

오라클 11g 기준


SELECT LISTAGG ( 데이터컬럼, ',') WITHIN GROUP (ORDER BY 정렬순서컬럼)   FROM tbl_dual;


','는 데이터 구분자이므로 원하는 모양으로 사용가능하다

만일 '*' 로 사용할 경우

A*B*C*D 이렇게 표현된다

',' = A,B,C,D


SELECT WM_CONCAT (데이터컬럼FROM tbl_dual

-중복 제거시 WM_CONCAT (DISTINCT 데이터컬럼) 으로!


위 처럼 표현하면 데이터가 일자로 표시 된다.



ex)

 COL1

 SORT

 A

 B

 D

3

 C

4


위와 같은 데이터가 들어있는 'TBL_EX' 테이블이 있을때


 SELECT LISTAGG ( COL1, ',') WITHIN GROUP (ORDER BY COL1)  COL2 FROM TBL_EX

결과 

 COL2

 A,B,D,C


 SELECT LISTAGG ( COL1, ',') WITHIN GROUP (ORDER BY SORT)  COL2 FROM TBL_EX

결과 

 COL2

 A,B,C,D


 SELECT WM_CONCAT(CO1)   FROM TBL_EX

결과 

 COL2

 A,B,C,D





표현해야될 데이터가 너무 길면

String concatenation result is too long.. 이라는 에러(비슷한 에러)가 뜸...

(TIBERO에러) 

Comments