SQL 질문입니다. 0 5 3,686

by 손님 [SQL Query] XMLAGG XMLELEMENT WM_CONCAT LISTAGG [2012.03.14 18:38:19]



안녕하세요.
SqL 문의드려요.

ex)

SELECT * FROM TABLE WHERE TYPE='A'

column | TYPE, NAME,CODE
-------------------------------
  |  A    사과    0
   |  A    레몬    1
   |  A    포도     2
  |  A    참외     3

이런식으로 데이터가 있다고 가정하고

결과 값을

A ,사과,레몬,포도,참외 , 0,1,2,3

이런식으로 한개의 ROW 로 받아올수있는지요
결국 A를 GROUP BY 하는 형식인데 나머지 NAME,CODE 에대해서는 문자열을 합치는거입니다.
by 강정식 [2012.03.14 19:56:32]
http://www.gurubee.net/article/13220

여기를 참고해보세요

by 마농 [2012.03.14 23:39:56]
WITH t(type, name,code) AS
(
SELECT 'A', '사과', '0' FROM dual
UNION ALL SELECT 'A', '레몬', '1' FROM dual
UNION ALL SELECT 'A', '포도', '2' FROM dual
UNION ALL SELECT 'A', '참외', '3' FROM dual
)
SELECT type
     , SUBSTR(XMLAgg(XMLElement(x, ',', name) ORDER BY code).Extract('//text()'), 2) name_9i
     , SUBSTR(XMLAgg(XMLElement(x, ',', code) ORDER BY code).Extract('//text()'), 2) code_9i
     , wm_concat(name) name_10g
     , wm_concat(code) code_10g
     , ListAgg(name, ',') WITHIN GROUP(ORDER BY code) name_11g
     , ListAgg(code, ',') WITHIN GROUP(ORDER BY code) code_11g
  FROM t
 GROUP BY type
;

by 손님 [2012.03.15 09:10:45]
글쓴이 입니다 . 
우선 답변 감사합니다.  제가 질문내용을 좀 부족하게 올렸네요..
A 그룹에 값들의 ROW 수와 해당 NAME 과 CODE 동적일수가 있습니다. A,B,C그룹에 ROW수는 각각 틀리고
해당하는 필드값들도 알수가 없습니다.

프로그램밍이라면 변수에 담아두고 ++ 연산 하겠지만 qUERY 서는 불가능한지요.. 

by 마농 [2012.03.15 09:28:33]

With 문 사용에 대해 곡해하신듯 하네요.
With 문은 그저 테스트 데이터를 만들기 위해 사용했을 뿐.
With 문 없다고 생각하시고 순수 쿼리만 봐주시면 됩니다.
버전별로 사용방법을 확인하시고 해당 버전에 맞는 방법을 선택하시면 됩니다.

by 손님 [2012.03.15 14:42:56]
글쓴이입니다.
마농님 덕분에 답변을 얻었습니다.
마농님의 심후한 내공에 경의를 표합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입