我有一个简单的Select查询,它聚合一个包含大文本的列。 以下内容适用于小文本,但我现在超过了Listagg字符限制(4000字节?)。
我是Oracle的新手,无法找到适合我在线申请的解决方案。
有人可以告诉我最好的选择吗?
我的查询(简化):
SELECT
m.S_ID AS SID
, LISTAGG
(
'ITEM NO.: ' || m.ITEM ||
' -nl-ARTICLE: ' || a.ARTICLE ||
' -nl-NET: ' || m.NET ||
' -nl-TAX: ' || NVL(m.TAX, 0) ||
' -nl-GROSS: ' || (m.NET + m.TAX),
' -nl--nl-'
) WITHIN GROUP (ORDER BY m.S_ID) AS Details
/* ... */
FROM
myTable m
/* ... */
非常感谢您提供的任何帮助,
麦克
答案 0 :(得分:1)
可能的方法之一。
select xmlagg(xmlelement(xxx,'ITEM NO.: ' || m.ITEM ||
' -nl-ARTICLE: ' || a.ARTICLE ||
' -nl-NET: ' || m.NET ||
' -nl-TAX: ' || NVL(m.TAX, 0) ||
' -nl-GROSS: ' || (m.NET + m.TAX),
' -nl--nl-'||',<-separator').extract('//text()') order m.S_ID).getClobval() from mytable
group by ...
第二种方法。 oracle允许创建自己的聚合函数user defined aggregation function