Oracle数据库 列转行 函数wm_concat 和函数listagg

列数据
pid userid
1 0000
1 0001
1 0002
想要得到的结果
pid userid
1 0000,0001,0002

方法一:
函数wm_concat()
select t.pid , wm_concat(t.userid) from oraceltable
group by t.id
存在问题 :版本为12G以上的该方法会出现乱码问题
替代函数为 listagg

方法二:
函数listagg(userid,’,’)within group (order by )
select id ,listagg(userid,’,’) within group(order by username) zhuanuserid from oraceltable group by id、

listagg(userid,’,’); userid要转置的列名 ;
within group(order by username); username 排序的列名;
zhuanuserid ; 是转置后的列名;

可能存在问题: 出现乱码问题;
解决方案: to_char 一下
例如: listagg(to_char(userid),’,’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值