wmsys.wm_concat聚合成一行逗号分隔且实现排序功能

wmsys.wm_concat聚合成一行逗号分隔且实现排序功能

1.第一步:建表
– Create table
create table STUDENT
(
SID VARCHAR2(32),
CID VARCHAR2(32),
SNAME VARCHAR2(20),
SAGE VARCHAR2(2),
SSEX VARCHAR2(2),
SADDRESS VARCHAR2(20)
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

2.第二步: 填充数据
17000001 1001 张同学 16 1 中国北京
17000002 1001 赵同学 17 1 中国北京
17000003 1001 钱同学 18 1 中国北京
17000004 1001 孙同学 19 1 中国上海
17000005 1001 李同学 20 2 中国上海
17000006 1001 王同学 21 2 中国上海
17000007 1002 曹同学 22 2 中国上海
17000008 1002 贾同学 23 2 中国上海
17000009 1002 常同学 20 2 中国杭州
17000010 1002 秦同学 18 2 中国杭州

3.第三步:测试

1、以cid分组,把同组的sage字段值打印在一行,逗号分隔(默认)

SELECT cid, WMSYS.WM_CONCAT(sage) FROM student GROUP BY cid;
在这里插入图片描述

2、以cid分组,把同组的sage字段的值打印在一行,竖线分隔

SELECT cid, replace(WMSYS.WM_CONCAT(sage), ‘,’, ‘|’) FROM student GROUP BY cid;

在这里插入图片描述

3、以cid分组,把同组的sage字段值去重且排序后打印在一行

select cid, WMSYS.WM_CONCAT(distinct sage) from student group by cid;
在这里插入图片描述

4.实现不同数据合成一行 。

SELECT cid, WMSYS.WM_CONCAT(sage), WMSYS.WM_CONCAT(sname) FROM student GROUP BY cid;

在这里插入图片描述

5.实现不同数据合成一行,逗号分隔且顺序不乱。
select a.cid,max(key) sjd from(select cid, WMSYS.WM_CONCAT(sage)over (partition by cid order by sid) key from student )a group by a.cid;

在这里插入图片描述

6.实现多个字段排序

select a.cid,max(age) sjd ,max(name) sname from(select cid, WMSYS.WM_CONCAT(sage)over (partition by cid order by sid) age,
WMSYS.WM_CONCAT(sname)over (partition by cid order by sid) name from student )a group by a.cid;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Tank_666/article/details/120035365