oracle数据库行转化成列,ORACLE行转列(行转一列,行转多列)

本文介绍了Oracle数据库中将行转换为列的几种方法,包括使用listagg函数进行字符串合并,利用pivot进行行列转换,以及decode函数实现行转列。示例查询展示了如何在风险管理和人员分配场景下应用这些技巧。
摘要由CSDN通过智能技术生成

--listagg(合并多行的值为字符串,只用一列来显示)

select status, count(*), listagg(risk_id, ',') within group (order by risk_id) from rp_risk group by status;

select risk_id, status, listagg(risk_id, ',') within group (order by risk_id) over(partition by status) from rp_risk;

select risk.risk_id, listagg(officer.last_name || ',' || officer.first_name, '; ') within group(order by null) from rp_risk risk, rp_risk_area_ref re, rp_risk_area area, rp_risk_officer officer

where risk.risk_id = re.risk_id

and re.risk_area_id = area.risk_area_id(+)

and area.risk_officer_id = officer.risk_officer_id(+)

group by risk.risk_id;

--pivot(行专列,将多行的值改为多列显示)(for in的那个column,是某个列的值,也就是将某个列的值作为新的列的column,这个column下边的值好像只能来自一列)

select * from

(select risk.risk_id, re.risk_area_order, officer.last_name || ',' || officer.first_n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值