DB/Oracle & tibero

Group By에서 문자열 합치기

개발게발 2022. 5. 10. 23:32

Oracle

-- 버전별
WITH t AS (
SELECT '과일' type, '사과' name, '0' code FROM dual
UNION ALL SELECT '과일', '레몬', '1' FROM dual
UNION ALL SELECT '과일', '포도', '2' FROM dual
UNION ALL SELECT '과일', '참외', '3' FROM dual
UNION ALL SELECT '채소', '오이', '0' FROM dual
UNION ALL SELECT '채소', '당근', '1' FROM dual
UNION ALL SELECT '채소', '호박', '2' FROM dual
)
SELECT type
     , SUBSTR(XMLAgg(XMLElement(x, ',', name) ORDER BY
        code).Extract('//text()'), 2) name_9i
     , wm_concat(name) name_10g
     , ListAgg(name, ',') WITHIN GROUP(ORDER BY code) name_11g
  FROM t
 GROUP BY type
 ORDER BY type
;

 

TYPE NAME_9i NAME_10G NAME_11G
과일 사과,레몬,포도,참외 사과,레몬,포도,참외 사과,레몬,포도,참외
채소 오이,당근,호박 오이,당근,호박 오이,당근,호박

 

Tibero

WITH t AS (
SELECT '과일' type, '사과' name, '0' code FROM dual
UNION ALL SELECT '과일', '레몬', '1' FROM dual
UNION ALL SELECT '과일', '포도', '2' FROM dual
UNION ALL SELECT '과일', '참외', '3' FROM dual
UNION ALL SELECT '채소', '오이', '0' FROM dual
UNION ALL SELECT '채소', '당근', '1' FROM dual
UNION ALL SELECT '채소', '호박', '2' FROM dual
)
SELECT type
     , Aggr_Concat(name, ',' ORDER BY code) name_Tibero
 FROM t
 GROUP BY type
 ORDER BY type
;

 

TYPE NAME_TIBERO
과일 사과,레몬,포도,참외
채소 오이,당근,호박

 

출처 : http://www.gurubee.net/article/55512

 

Group By 에서 문자열 합치기 - 버전별 정리

WITH t AS ( SELECT '과일' type, '사과' name, '0' code FROM dual UNION ALL SELECT '과일', '레몬', ..

www.gurubee.net