오라클에서, 조회된 Row 값을 컬럼값으로 조회하는 경우 아래 방법 사용. 

(잊어버릴까봐 기록해놓는 거임... )

DB에서 토드 등을 이용해 데이터 조회후, 엑셀 자료로 만들어야 하는 경우에 사용했음.



피벗, wm_concat등 방법이 있으나 value가 4,000이 넘거나 DB의 buffer 사이즈 등으로 오류가 발생(사이즈가 작으면 괜찮은듯.)

GetStringVal()으로 하면 텍스트로 처리하나, 사이즈 제한이 있어, CLOB으로 처리.


select  name,  

         SUBSTR(XMLAgg(XMLElement(val, '|'|| zipcode|| '|' || adress ||'|'||tel) ORDER BY zipcode).Extract('//text()').GETCLOBVAL(),2) val

from table_name

group by name


과 같이 하면 된다. 


아래와 같이 테이블이 있을시,


이름   우편번호 주소                                   전화번호

---------------------------------------------------------------------

홍길동 01234    서울 구로구 디지털로 1길 222  02-123-1234

홍길동 01234    서울 구로구 디지털로 3길 111  02-333-1234

고길동 02222    경기 부천시 소사로길 303        031-123-1234



아래와 같이 출력 값을 구할 수 있다.

(토드에서 export data set을 하되, clob을 포함하도록 옵션 선택후  CSV로 저장한뒤, 엑셀에서  '|' 구분자로 나누기를 하면 각 컬럼으로 구분된다.)

이름    val  ( <-이 필드는 HUGECLOB으로 처리된다)

-----------------------------------------------------------------------------------------------------------------------

홍길동 01234|서울 구로구 디지털로 1길 222|02-123-1234|01234|서울 구로구 디지털로 3길 111|02-333-1234

고길동 02222|경기 부천시 소사로길 303|031-123-1234


기록 끝.


Posted by 옴팡투덜이

BLOG main image
by 옴팡투덜이

공지사항

카테고리

분류 전체보기 (59)
감상과 비평 (15)
자기 고찰 (0)
Infomation (40)
아이디어 (0)
일탈을 꿈꾸는 나의 일상 (1)

최근에 올라온 글

최근에 달린 댓글