테이블명 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형식이라 값을 가져오기 힘들더이다.
그래서 문자열로 나타내기위해 값을 묶었다.

+ Recent posts