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

1.情景展示

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

以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支持使用该函数;

但是,新版本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';

 

写在最后

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

 相关推荐:

posted @ 2022-04-06 16:29  Marydon  阅读(4256)  评论(0编辑  收藏  举报