A 테이블 데이터는
NO | NAME |
100 | 한국 |
101 | 중국 |
102 | 미국 |
103 | 일본 |
B 테이블에는
NO | CITYNUM |
100 | 1000 |
100 | 1001 |
101 | 1021 |
102 | 1025 |
103 | 1026 |
C 테이블에는
CITYNUM | CITY |
1000 | 서울 |
1001 | 경기 |
1021 | 북경 |
1025 | 워싱턴 |
1026 | 도쿄 |
이런 구조로 되어 있습니다..
원하는 데이터는
NO | NAME | CITY |
100 | 한국 | 서울,경기 |
101 | 중국 | 북경 |
102 | 미국 | 워싱턴 |
103 | 일본 | 도쿄 |
이런식으로 한국의 CITY 는 한줄로 표현을 하려고 합니다.
어떤식으로 해야 하나요??
즐거운 주말되세요
WITH A AS ( SELECT 100 NO , '한국' NM FROM DUAL UNION ALL SELECT 101 NO , '중국' NM FROM DUAL UNION ALL SELECT 102 NO , '미국' NM FROM DUAL UNION ALL SELECT 103 NO , '일본' NM FROM DUAL ) , B AS ( SELECT 100 NO , 1000 CITYNUM FROM DUAL UNION ALL SELECT 100 NO , 1001 CITYNUM FROM DUAL UNION ALL SELECT 101 NO , 1021 CITYNUM FROM DUAL UNION ALL SELECT 102 NO , 1025 CITYNUM FROM DUAL UNION ALL SELECT 103 NO , 1026 CITYNUM FROM DUAL ) , C AS ( SELECT 1000 CITYNUM , '서울' CITY FROM DUAL UNION ALL SELECT 1001 CITYNUM , '경기' CITY FROM DUAL UNION ALL SELECT 1021 CITYNUM , '북경' CITY FROM DUAL UNION ALL SELECT 1025 CITYNUM , '워싱턴' CITY FROM DUAL UNION ALL SELECT 1026 CITYNUM , '도쿄' CITY FROM DUAL ) SELECT A.NO , A.NM , LISTAGG(C.CITY,',') WITHIN GROUP (ORDER BY C.CITYNUM ) CITY FROM A , B , C WHERE A.NO = B.NO AND B.CITYNUM = C.CITYNUM GROUP BY A.NO , A.NM