oracle 实现 多行转换为一行用逗号隔开

直接上图看效果
oracle 实现 多行转换为一行用逗号隔开_第1张图片
我现在需要把DEVIE_ID分组,得到如下效果:

DEVICE_ID PARAM_CODE
75 41,42,43

这里其实有两种实现方式,我看过其它博客,oracle 10g 开始提供的 WMSYS.WM_CONCAT 函数可以实现,不过我的是11g后的版本,oracle11g后 可以用listagg()替换wmsys.wm_concat()实现行转列,提高性能,sql如下:

select DEVICE_ID,listagg(param_code, ',') within group(order by null) paramCode from TW_COLLECT_RELATION_RECORD where DEVICE_ID = '75' group by DEVICE_ID;

结果集如下:
在这里插入图片描述
一开始我就是用WMSYS.WM_CONCAT函数的一直不生效,替换成这个函数就好了,这里还是把WMSYS.WM_CONCAT函数的语句也发一下吧,有可能你用的是低版本的oracle,sql如下:

select DEVICE_ID, wmsys.wm_concat(param_code) paramCode from TW_COLLECT_RELATION_RECORD group by DEVICE_ID;

好了,希望以上能够解决大家的问题。

你可能感兴趣的:(Oracle)