wm_concat替代函数
时间: 2023-09-28 18:09:39 浏览: 134
自写函数用于替换wm_concat函数.zip
在Oracle后期版本中,WM_CONCAT()函数被摒弃了,可以使用LISTAGG()函数来实现相同的效果。使用LISTAGG()函数的语法如下:
SELECT LISTAGG(column_name, separator) WITHIN GROUP(ORDER BY column_name) AS new_column_name
FROM table_name
GROUP BY other_column_name
其中,column_name是需要拼接的列名,separator是拼接的分隔符,table_name是表名,other_column_name是GROUP BY的列名。
举个例子,假设我们有三个表TR_SYS_UF、TD_SYS_FUNCTION和TD_SYS_MENU,我们想要按照ENCODE列进行分组,并将FUNCTIONCODE列使用逗号进行拼接。可以使用以下SQL语句来实现:
SELECT LISTAGG(b.FUNCTIONCODE, ',') WITHIN GROUP(ORDER BY b.FUNCTIONID) AS FUNCTIONCODE, c.ENCODE
FROM TR_SYS_UF a
LEFT JOIN TD_SYS_FUNCTION b ON a.FUNCTIONID = b.FUNCTIONID AND b.FLAG = 1
LEFT JOIN TD_SYS_MENU c ON b.MENUID = c.MENUID AND c.FLAG = 1
WHERE a.FLAG = 1
GROUP BY c.ENCODE
这样就能够实现和使用WM_CONCAT()函数相同的效果。
阅读全文