문자열 결합 그룹핑
아래 처럼 두개의 테이블이 있고
TB_A
------ ------- ------
A_ID B_ID A_DATA
------ ------- ------
1 1 가가
2 1 나나
3 1 다다
4 2 거거
5 2 너너
....
TB_B
------- ------
B_ID B_DATA
------- ------
1 123
2 456
3 789
4 123
5 111
여기서 TB_B 의 B_ID = 1인 데이타를 조회 한 결과...
------- ------ -------
B_ID B_DATA A_DATA
------- ------ -------
1 123 가가, 나나, 다다 <--- 이렇게 한줄로...
[MSSQL]
SELECT B_ID, B_DATA,
STUFF( (SELECT ',' + A_DATA
FROM TB_A A WHERE A.B_ID = B.B_ID
FOR XML PATH('')),1,1,'')
FROM TB_B B
WHERE B_ID = 1;
[ORACLE]
SELECT B_ID,
SUBSTR(MAX(sys_connect_By_pAth(A_DATA,',')),2)
FROM (
SELECT A.B_ID, B_DATA,A_DATA,
ROW_NUMBER() OVER(PARTITION BY A.B_ID ORDER BY A.A_ID) rnum
FROM TB_A A, TB_B B
WHERE A.B_ID = B.B_ID
)
WHERE B_ID = 1
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum-1
AND PRIOR B_ID = B_ID
GROUP BY B_ID;
'Database / Sql' 카테고리의 다른 글
[Oracle] FLASHBACK (0) | 2011.09.02 |
---|---|
[Oracle] BIN$... 으로 시작하는 테이블 (0) | 2011.08.31 |
[Oracle] JOIN UPDATE (0) | 2011.05.25 |
[Oracle] JOIN UPDATE (bypass_ujvc 힌트) (0) | 2011.05.25 |
[MSSQL] WHERE 절에 CASE문 추가 (0) | 2011.03.21 |