Oracle行转列函数:wm_concat与listagg的使用

12 篇文章 0 订阅
9 篇文章 0 订阅

两个函数功能都是将行转列:

wm_concat 返回值为clob,多个值以逗号分隔;listagg 返回值为varchar,可以指定分隔符

 

例如部门表 table_dept 表中 dept_no 为 d1 的有两条记录,emp_name 分别是张三和李四,查询:

select dept_no 部门编号, emp_name 员工姓名
from table_dept 
where dept_no = 'd1'

结果为:

部门编号    员工姓名
d1            张三
d1            李四

 

现将部门 d1 下的员工以一条数据显示,既多行员工姓名转换成一列显示

1、使用 wm_concat

select dept_no 部门编号, to_char( wm_concat( emp_name ) ) 员工姓名
from table_dept 
where dept_no = 'd1'
group by dept_no

2、使用 listagg

select dept_no 部门编号, 
       listagg( emp_name, ',' ) within group ( order by dept_no ) 员工姓名
from table_dept 
where dept_no = 'd1'
group by dept_no

结果为

部门编号    员工姓名
d1         张三,李四

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值