WITH T1 AS ( SELECT '박지성' NM, '1' NO1, '2' NO2 FROM DUAL UNION ALL SELECT '손흥민' NM, '2' NO1, '3' NO2 FROM DUAL UNION ALL SELECT '차범근' NM, '3' NO1, '0' NO2 FROM DUAL ) ,T2 AS( SELECT '1' NO, '부산' CITY FROM DUAL UNION ALL SELECT '2' NO, '서울' CITY FROM DUAL UNION ALL SELECT '3' NO, '울산' CITY FROM DUAL ) SELECT NM ,REGEXP_SUBSTR(NO,'[^,]+',1,1) NO1 ,REGEXP_SUBSTR(NO,'[^,]+',2,2) NO2 FROM ( SELECT T1.NM ,LISTAGG(T2.CITY,',') WITHIN GROUP (ORDER BY CITY) AS NO FROM T1 ,T2 WHERE T1.NO1 = T2.NO OR T1.NO2 = T2.NO GROUP BY T1.NM );
WITH player AS ( SELECT '박지성' nm, 1 no1, 2 no2 FROM dual UNION ALL SELECT '손흥민', 2, 3 FROM dual UNION ALL SELECT '차범근', 3, null FROM dual ) , city AS ( SELECT 1 no, '부산' city FROM dual UNION ALL SELECT 2, '서울' FROM dual UNION ALL SELECT 3, '울산' FROM dual ) -- 1. 서브쿼리 사용 SELECT nm , (SELECT city FROM city WHERE no = a.no1) no1 , (SELECT city FROM city WHERE no = a.no2) no2 FROM player a ; -- 2. 조인 사용 SELECT nm , c1.city no1 , c2.city no2 FROM player a INNER JOIN city c1 ON c1.no = a.no1 LEFT OUTER JOIN city c2 ON c2.no = a.no2 ;