oracle 多行合併成一行: listagg \ within group

工作時遇到需求 : 按照某字段進行分組,並把其中一列的值合併顯示在一個字段中
如: 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分類.
這裏寫圖片描述

但是也可以通過程序塊等其他方式實現. 後續嘗試繼續更新在下面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章