LISTAGG(abc.id, ',') WITHIN GROUP (ORDER BY abc.id) OVER(PARTITION BY bdd.id) Codes
我想转换这个LISTAGG
到XMLAGG
作为LISTAGG
给出错误,如果值达到4000以上的字符。
我尝试了这种方式,但给出语法错误
RTRIM((XMLAGG(XMLELEMENT(e, abc.id || ', ')) WITHIN GROUP (ORDER BY abc.id) OVER(PARTITION BY bdd.id)).extract('//text()').getclobval(), ', ') Codes
1条答案
按热度按时间uxh89sit1#
如何使用
XMLAGG
与WITHIN GROUP
和OVER(PARTITION BY )
子句?总结-您不能,
XMLAgg
语法不支持这两个子句。XMLAGG
文档:XMLAgg
是聚合函数。这意味着:
XMLAgg
不支持WITHIN GROUP
语法,ORDER BY
子句位于函数的括号内。XMLAgg
是一个聚合函数,并且NOT没有其函数的分析版本,因此您不能应用窗口子句并指定PARTITION BY
。如果你想把它用作一个聚合函数,那么你可以使用:
其中,对于样本数据:
输出:
| 代码|
| - -----|
| 1、2、3、4、5、6、7、8、9、10|
fiddle