oracle 多行合併成一行: listagg \ within group
阿新 • • 發佈:2019-02-05
工作時遇到需求 : 按照某欄位進行分組,並把其中一列的值合併顯示在一個欄位中
如: 1 蘋果
1 鴨梨
2 香蕉
2 葡萄
顯示為 : 1 蘋果\鴨梨
2 香蕉\葡萄
經過學習可以使用listagg \ within group
1 建表 \ 插入資料
create table DEMO ( id NUMBER, name VARCHAR2(20), nums NUMBER ); insert into demo values(1, '蘋果', 1000); insert into demo values(1, '鴨梨', 2000); insert into demo values(1, '香蕉', 4000); insert into demo values(2, '橘子', 5000); insert into demo values(3, '西瓜', 3000); insert into demo values(4, '葡萄', 3500); insert into demo values(5, '芒果', 4200); insert into demo values(5, '哈密', 5500);
2 查詢sql
SELECT ID, listagg(NAME, ',') within group(ORDER BY ID) AS NAMES
FROM DEMO T
GROUP BY ID
將NAME之間以 逗號 連線 , 並且按照ID分類.
但是也可以通過程式塊等其他方式實現. 後續嘗試繼續更新在下面