본문 바로가기

개발하자/ORACLE

[Oracle] 버전별 Group By에서 문자열 합치기 (여러 ROW를 한줄로)

 WITH tbl (type, name, code) AS (

         SELECT 'STRING', 'BBB', '1' FROM dual UNION ALL
         SELECT 'INTEGER', '222', '1' FROM dual UNION ALL
         SELECT 'STRING', 'CCC', '2' FROM dual UNION ALL
         SELECT 'INTEGER', '333', '2' FROM dual UNION ALL
         SELECT 'STRING', 'AAA', '0' FROM dual UNION ALL
         SELECT 'STRING', 'DDD', '3' FROM dual UNION ALL
         SELECT 'INTEGER', '111', '0' FROM dual
 )
 SELECT type 
            , SUBSTR(XMLAgg(XMLElement(x, ',', name) ORDER BY code).Extract('//text()'), 2) AS ORA_9i 
            , WM_CONCAT(name) AS ORA_10g 
            , ListAgg(name, ',') WITHIN GROUP(ORDER BY code) AS ORA_11g
     FROM tbl
   WHERE 1=1
   GROUP BY type
   ORDER BY type 


출처 : 오라클클럽

URL : http://www.oracleclub.com/article/55486