oralce12G替代WM_CONCAT的实现

1. 在12G 之前可以使用如下代码实现列合并:

select a.TABLE_NAME,wm_concat(b.column_Name)as columns
from user_tables a
     inner join user_tab_cols b on a.TABLE_NAME=b.TABLE_NAME
group by a.TABLE_NAME

 

2. 在12G 版本之后用listagg聚合函数代替:

select a.TABLE_NAME,listagg(b.column_Name,',') as columns
from user_tables a
     inner join user_tab_cols b on a.TABLE_NAME=b.TABLE_NAME
group by a.TABLE_NAME

 

3. 当这个值过长时需要使用 xmlagg 来代替:

select a.TABLE_NAME,'HUPDATETIME',0,1,rtrim(xmlagg(XMLELEMENT(e,b.column_Name,',').EXTRACT('//text()')).getclobval(),',')  as data_columns,null,null,null
from user_tables a
     inner join user_tab_cols b on a.TABLE_NAME=b.TABLE_NAME
group by a.TABLE_NAME



 

posted @ 2020-04-10 09:58  踏叶乘风  阅读(774)  评论(0编辑  收藏  举报