將同群組的多行字串合併為單一行,以指定分隔符分隔。例如:
-- 原始資料
A B
1 我
1 們
2 一
2 起
-- 期望結果
A B
1 我,們
2 一,起
SELECT a,
LTRIM(MAX(SYS_CONNECT_BY_PATH(b, ',')), ',') AS b
FROM (
SELECT b, a,
ROW_NUMBER() OVER (PARTITION BY a ORDER BY b DESC) AS rn
FROM test
)
START WITH rn = 1
CONNECT BY rn - 1 = PRIOR rn
AND a = PRIOR a
GROUP BY a;
b DESC)分配遞增序號 rn(1,2,3...)。b 以逗號串聯,產生 ,我、,我,們 等中間結果。LISTAGG(b, ',') WITHIN GROUP (ORDER BY b),語法簡潔、效能更好。SYS_CONNECT_BY_PATH 是經典變通寫法。JSON_ARRAYAGG、XMLAGG 等新功能。(a, b) 加速排序與分組。XMLAGG 避免遞歸深度限制。