ORACLE 쿼리 질문좀 드리겟습니다.. 0 3 1,694

by 아쉬로케트 [SQL Query] [2010.11.15 13:40:32]



쿼리가 능숙하지가 못해서 짱돌 굴려도 답이 안나와서 질문 올립니다 ㅠㅠ 답변 부탁드려요

A칼럼 B칼럼(시퀀스) C칼럼 D칼럼 E칼럼
A01 1    C    성명      나이
A01 2    C    성명      나이
B01 1 C    성명      나이
B01 2 C    성명      나이
B01 3 C    성명      나이
C01 1 C    성명      나이

테이블이 위와 같은 형식으로 되어 있을때,   A칼럼||':'||B칼럼||':||C칼럼..... 이런식으로 문자열 연결
하려구 하는데요 보시는 바와 같이 A칼럼에 A01에 해당하는 값이 2개... B01은 3개의 값이 있거든요..
A01, B01에 값을 전부 연결하는 방법이 있을까요?  ^^;

ex) A01 ==>  1 : C : 성명:나이 : 2:C:성명:나이
  B01 ==>   1 : C : 성명:나이 : 2:C:성명:나이:3:C:성명:나이

by v상이v [2010.11.15 14:08:29]
WITH TMP AS (
SELECT 'A01' A, '1' B, 'C1' C, '성명1' D, '나이1' E FROM DUAL UNION ALL
SELECT 'A01' A, '2' B, 'C2' C, '성명2' D, '나이2' E FROM DUAL UNION ALL
SELECT 'B01' A, '1' B, 'C3' C, '성명3' D, '나이3' E FROM DUAL UNION ALL
SELECT 'B01' A, '2' B, 'C4' C, '성명4' D, '나이4' E FROM DUAL UNION ALL
SELECT 'B01' A, '3' B, 'C5' C, '성명5' D, '나이5' E FROM DUAL UNION ALL
SELECT 'C01' A, '1' B, 'C6' C, '성명6' D, '나이6' E FROM DUAL
)
SELECT A
,SUBSTR(XMLAGG(XMLELEMENT("nm", ' : ' || V) ORDER BY V).EXTRACT('//text()').GetStringVal(),4) AS V
FROM (
SELECT A
,B||' : '||C||' : '||D||' : '||E AS V
FROM TMP
)
GROUP BY A
ORDER BY A

by 아쉬로케트 [2010.11.15 14:26:50]
감사합니답!!! ^^

by 知音 [2010.11.16 10:57:58]

with t as (
select 'A01' A, '1' B, 'C1' C, '성명1' D, '나이1' E from dual union all
select 'A01' A, '2' B, 'C2' C, '성명2' D, '나이2' E from dual union all
select 'B01' A, '1' B, 'C3' C, '성명3' D, '나이3' E from dual union all
select 'B01' A, '2' B, 'C4' C, '성명4' D, '나이4' E from dual union all
select 'B01' A, '3' B, 'C5' C, '성명5' D, '나이5' E from dual union all
select 'C01' A, '1' B, 'C6' C, '성명6' D, '나이6' E from dual
)
select a
, replace(wm_concat(b||' : '||c||' : '||d||' : '||e), ',', ' : ') v
from t
group by a
order by 1
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입