WITH T AS ( SELECT 1 CODE, '한국' NAME FROM DUAL UNION ALL SELECT 2, '독일' FROM DUAL UNION ALL SELECT 3, '미국' FROM DUAL ), U AS ( SELECT 1 CODE, '현대' MODEL FROM DUAL UNION ALL SELECT 1, '기아' FROM DUAL UNION ALL SELECT 1, '삼성' FROM DUAL UNION ALL SELECT 2, 'bmw' FROM DUAL UNION ALL SELECT 2, 'bens' FROM DUAL UNION ALL SELECT 3, 'ford' FROM DUAL ) SELECT A.NAME , LISTAGG(B.MODEL, ',') WITHIN GROUP (ORDER BY B.MODEL) AS MODEL , B.CODE FROM T A JOIN U B ON A.CODE = B.CODE GROUP BY A.NAME, B.CODE ORDER BY CODE ;
무슨 말씀인지 이해가 가질 않네요...
모델명은 알 수 없고, 추가로 늘어나고 빠진다는게?
혹시 WITH 절에 있는 TEMP 데이터를 말씀하시는건가요?
저건 위에서 제시해준 데이터 기준으로 TEMP 테이블 데이터 만들어서 한거고,
실질적으로 원하는 결과를 얻으시려면,
하위 SELECT 절의 T 와 U 의 테이블 정보만 바꿔주시면 원하는 데이터를
얻으실 수 있습니다.
SELECT A.NAME , LISTAGG(B.MODEL, ',') WITHIN GROUP (ORDER BY B.MODEL) AS MODEL , B.CODE FROM T A JOIN U B -- 이 부분의 T 와 U 테이블을 사용 테이블명으로 바꿔주세요. ON A.CODE = B.CODE GROUP BY A.NAME, B.CODE ORDER BY CODE ;