고민을 해봐도 잘 안풀려서 질문을 남깁니다.
여러 테이블에서 가져오는 부분이 많아서.
TB_PHOTO 라는 메인테이블 쿼리를 짰는데.
SELECT A.P_ID
, (SELECT SUBSTR(XMLAGG (XMLELEMENT (C, ',', C.CA_NAME) ORDER BY CA_NAME).EXTRACT ('//text()'), 2) AS CA_NAME
FROM TB_CATEGORY C, TB_PHOTOCATEGORY CP
WHERE C.CA_ID = CP.CA_ID
AND CP.P_ID = A.P_ID) AS CA_NAME
, (SELECT SUBSTR(XMLAGG (XMLELEMENT (B, ',', B.MAJOR_NAME) ORDER BY MAJOR_NAME).EXTRACT ('//text()'), 2) AS MAJOR_NAME
FROM TB_PHOTOPERSON B
WHERE B.P_ID = A.P_ID) AS MAJOR_NAME
, <-----------------------------------------------------
FROM TB_PHOTO A
WHERE 1 = 1
AND A.P_STATUS IN ('2')
이게 전체쿼리 인데. 위에 XMLAGG로 짠 쿼리들은 CONNECT BY로 별도로 짠 쿼리들을
XMLAGG로 짜서 넣었는데
아래 UNION ALL 로 짠 쿼리도 위에 화살표 부분에 XMLAGG로 해서 넣을려고 합니다.
해당 조건에 따라서 엑셀 화면에 보여주기 위해서 UNION ALL 을 사용했는데.
어떻게 XMLAGG로 짜야할지 부탁 좀 드리겠습니다.
SELECT A.META_ID, METACODE_NM
FROM TB_STMETA A, TB_STMETAPHOTO B, TB_STMETACODE C
WHERE A.META_ID = B.META_ID
AND A.META_ID = C.META_ID
AND META_VALUE = C.METACODE_ID
AND P_ID = 364831
AND CODE_FLAG = 1
UNION ALL
SELECT A.META_ID, META_VALUE AS METACODE_NM
FROM TB_STMETA A, TB_STMETAPHOTO B
WHERE A.META_ID = B.META_ID AND P_ID = 364831 AND CODE_FLAG = 2
ORDER BY META_ID) META_ID
( SELECT SUBSTR( XMLAGG(XMLELEMENT(C, ',', metacode_nm) ORDER BY meta_id).EXTRACT('//text()') , 2) AS metacode_nm FROM (SELECT b.p_id, a.meta_id, metacode_nm FROM tb_stmeta a, tb_stmetaphoto b, tb_stmetacode c WHERE a.meta_id = b.meta_id AND a.meta_id = c.meta_id AND b.meta_value = c.metacode_id AND a.code_flag = 1 -- AND p_id = 364831 -- 조건은 인라인뷰 밖으로 UNION ALL SELECT b.p_id, a.meta_id, meta_value as metacode_nm FROM tb_stmeta a, tb_stmetaphoto b WHERE a.meta_id = b.meta_id AND a.code_flag = 2 -- AND p_id = 364831 -- 조건은 인라인뷰 밖으로 ) WHERE p_id = a.p_id -- 조건은 인라인뷰 밖으로 ) AS metacode_nm