2014-03-12 2 views
1

두 테이블을 조인하고 두 번째 테이블의 모든 그룹 행을 한 행에 가져 오라는 oracle SQL 쿼리를 원합니다.한 줄에 여러 개의 선택 쿼리 결과를 얻는 방법

field1 field2 field3 
1   Test1 Ttest1 
1   Test2 Ttest2 
1   Test3 Ttest2 
2   Test4 Ttest2 
2   Test5 T2est2 

Field 1 field2     field3 
1   Test1,Test2,Test3  Ttest1,Ttest2 
2   Test4,Test5    Ttest2 
+0

오라클 버전주세요! –

+0

..... 오라클 - 11g – Sahal

답변

2

사용 LISTAGG 기능이어야한다.

SELECT field1, 
     listagg(field2,',') WITHIN GROUP(ORDER BY field2) field2, 
     listagg(field3,',') WITHIN GROUP(ORDER BY field3) field3 
FROM <table_name> 
GROUP BY field1; 

WM_CONCAT 기능의 사용 DISTINC은 쉼표로 구분 된 문자열에서 중복을 제거합니다. 당신이 mentioned.WM_CONCAT 하나 개의 쉼표로 구분 된 문자열에 행의 목록을 CONCAT하는 데 사용됩니다 가지고

SELECT field1, 
     wm_concat(DISTINCT(field2)) field2, 
     wm_concat(DISTINCT(field3)) field3 
FROM t 
GROUP BY field1; 
1

당신은 결과를 얻을 기능의 WM_CONCAT를 사용할 수 있습니다.

SELECT DISTINCT FIELD1, 
    (SELECT WM_CONCAT(FIELD2) WHERE FIELD1 = T.FIELD1), 
    (SELECT WM_CONCAT(FIELD3) WHERE FIELD1 = T.FIELD1) 
FROM TABLE T; 

그러나이 해결 방법은 특정 Oracle입니다.

+0

비제이,이 연결됩니다하지만 'filed1'OPs 요구 사항에 대한 그룹화해야합니다 –

+0

@ Oracle 사용자 식별 주셔서 감사합니다, 나는 답변을 업데이 트했습니다. – Vijay

관련 문제