数据库oracle函数--结果集行转列pivot

结果集行转列函数pivot

语法格式

select * from t pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))

实现功能

实现将指定字段的字段值转换为列的效果

示例目的:得到每条值班记录的各值班类型人员

字段说明:
main_id-值班日志id,duty_type-值班类型,employees-值班人员

1、未使用行转列函数
SELECT main_id,duty_type,
LISTAGG(person_duty, ‘,’) WITHIN GROUP (ORDER BY person_duty) AS employees
FROM tab
GROUP BY main_id,duty_type
结果:
在这里插入图片描述
2、使用行转列函数
SELECT * from (
SELECT duty_type,main_id,LISTAGG(person_duty, ‘,’) WITHIN GROUP (ORDER BY person_duty) AS employees
FROM tab
GROUP BY main_id,duty_type) t PIVOT (max(employees) FOR duty_type IN (‘1’ as employees1,‘2’ as employees2,‘3’ as employees3,‘4’ as employees4))
在这里插入图片描述
说明:不管转换的结果是不是由单表查出的,select后面都是跟的*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值