오라클 쿼리 질문입니다. 0 2 1,099

by Kaiger [SQL Query] [2018.07.13 16:36:07]


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 는 한줄로 표현을 하려고 합니다.

어떤식으로 해야 하나요??

즐거운 주말되세요

by 우리집아찌 [2018.07.13 16:59:09]
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

 


by Kaiger [2018.07.13 17:34:36]

감사합니다.. listagg 가 답이였네요. 좋은 주말 보내세요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입