0
点赞
收藏
分享

微信扫一扫

Oracle WM_CONCAT()的替代方案(多行转单列)

1.情景展示

在SQL当中,列转行是常用的数据查询操作之一;

以Oracle为例,我们可以使用合并列函数WM_CONCAT(),快速将多列转换成一行。

Oracle WM_CONCAT()的替代方案(多行转单列)_新版本

2.WM_CONCAT()

语法:

WM_CONCAT(列名)

SELECT TO_CHAR(WM_CONCAT(T7.OPERATION_NAME))
FROM BASEINFO_OPHISTORY T7
where T7.Org_Code = '410000117410';

Oracle WM_CONCAT()的替代方案(多行转单列)_新版本_02

 老版本的Oracle支持使用该函数;

但是,新版本Oracle已经将该函数去掉了,有没有替代办法?

3.解决方案

语法:

LISTAGG(列名, '间隔符') WITHIN GROUP(ORDER BY 列名)

优点:

可以自己指定间隔符号,也可以将列合成行前,按指定列进行排序。

SELECT LISTAGG(T7.OPERATION_NAME, ',') WITHIN GROUP(ORDER BY T7.OPERATION_NAME)
FROM BASEINFO_OPHISTORY T7
WHERE T7.ORG_CODE = '410000117410';

Oracle WM_CONCAT()的替代方案(多行转单列)_ORACLE_03

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!


举报

相关推荐

0 条评论