테이블명 ONE_LINE
A B C
김승훈 천재 맞음
김승훈 천재 글쎄
김승훈 천재 아닐껄
김승훈 바보 맞음
김승훈 바보 아닐껄
위와 같은 테이블이 있다
SELECT 로 조회할때 그룹으로 지정을하면
기껏 나타 내봐야
A B COUNT
김승훈 천재 3
김승훈 바보 2
요정도밖에 나타내지 못한다
내가 하고자 하는것은 아래와같이
C의 컬럼의 내용도 같이 나타내고자 하는것이다.!!
A B C
김승훈 천재 맞음, 글쎄, 아닐껄
김승훈 바보 맞음, 아닐껄
검색을 때려본 결과 두가지방법이있던데
CONNECT 를 이용해서 하는방법과
XML 을 이용해서 하는방법
CONNECT 를 이용해서 하는방법은 너무어렵더이다(OTL)....패스
아래는 XML을 이용한 방법이다.
SELECT A, B, SUBSTR(XMLAGG(XMLELEMENT(ELONG,C || ',') ORDER BY C).EXTRACT('//text()'),1) AS C FROM ONE_LINE GROUP BY A,B
XMLELEMT함수로 위와 같이 값을 지정하게 되면
<ELONG>맞음,</ELONG>
<ELONG>글쎄,</ELONG>
<ELONG>아닐껄,</ELONG>
..... 요런식으로 나타나게 되는데
이값을 다시 XMLAGG함수로 묶으면
<ELONG>맞음,</ELONG><ELONG>글쎄,</ELONG><ELONG>아닐껄,</ELONG>.....
요런식으로 한줄로 나타낼수 있다
여기서 이제 EXTRACT 함수로 태그를 제거 하면
값만 뽑아서 한줄로 나타낼수 있다.
//text() 이부분은 반드시 소문자로....
대문자로 하다가 왜안돼지 하면서 개고생했다.ㅠ
값을 SUBSTR로 묶은 이유는 서버사이드에서 값을 가져올때 XML형식이라 값을 가져오기 힘들더이다.
그래서 문자열로 나타내기위해 값을 묶었다.