首页 > 解决方案 > xmlagg 函数需要永远执行

问题描述

我有一个表,其中数据被拆分为多行。我想将数据连接到 1 行分组Item Number。当我使用LISTAGG函数时,它给了我错误可能是因为函数LISTAGG不支持Oracle 11g Release 1 xmlagg。当我通过有限数量的项目 2 或 5 项目时,它工作正常,但我尝试对表中的所有项目执行,〜 25000 个项目它没有给出任何输出,而是继续执行。有什么我做的不对吗?

这是我的查询:

SELECT 
ITEM_NUMBER,
--LISTAGG("Product Line(s)", '; ') WITHIN GROUP (ORDER BY "Product Line(s)") "Product Line(s)"
rtrim(xmlagg(xmlelement(e, "Product Line(s)", '; ') order by "Product Line(s)").extract('//text()').getclobval(), '; ') "Product Line(s)"
FROM ITEM
GROUP BY ITEM_NUMBER 

样本数据

ITEM_NUMBER        "Product Line(s)"
4100-0004          R13
4100-0004          R06
4100-0015          R12
4100-0015          R36

期望的输出

ITEM_NUMBER        "Product Line(s)"
4100-0004          R13; R06
4100-0015          R12; R36

当我只传递这 2 项甚至 5 项时,上面的查询完美地工作,但当我一次获取整个表的数据时不起作用。有什么建议可以优化查询吗?

标签: sqloracle-sqldeveloper

解决方案


推荐阅读