转自:https://blog.csdn.net/baojiangfeng/article/details/62237522
工作时遇到需求 : 按照某字段进行分组,并把其中一列的值合并显示在一个字段中
如: 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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2 查询sql
SELECT ID, listagg(NAME, ',') within group(ORDER BY ID) AS NAMES
FROM DEMO T
GROUP BY ID
- 1
- 2
- 3
- 4
将NAME之间以 逗号 连接 , 并且按照ID分类.