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';
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/16107173.html