我有這個查詢從產品獲取庫存數據,並且需要在一列中完成,因此我使用此列表聚合查詢(其他信息:Select subquery that return multiple rows as string (one column) in table (Oracle SQL) )。但在某些數據中出現一些錯誤:字符串連接的結果太長。如何優化這個查詢並解決這個錯誤? (我需要,只有在這個子查詢,因爲查詢在其他功能使用的變化)謝謝子查詢Listagg獲取錯誤:字符串連接的結果太長
SELECT K.PRODUCT_NO, ..., (SELECT i.OPTIONS
FROM PRODUCT p , ...
LEFT JOIN (
SELECT ITM.PRODUCT_NO
,LISTAGG(NVL2(ITM.OPTION1, ITM.OPTION1 || (chr(13)||chr(10)), '') || NVL2(ITM.OPTION2, ITM.OPTION2 || (chr(13)||chr(10)), '') || NVL2(ITM.OPTION3, ITM.OPTION3 || (chr(13)||chr(10)), '') || NVL2(ITM.OPTION4, ITM.OPTION4 || (chr(13)||chr(10)), ''), ',') WITHIN
GROUP (
ORDER BY ITM.itm_no
) AS OPTIONS
FROM ITEM ITM
GROUP BY ITM.PRODUCT_NO
) i ON (p.PRODUCT_NO = i.PRODUCT_NO)
WHERE P.PRODUCT_NO = K.PRODUCT_NO) as OPTIONS,
(SELECT i.OPTIONS
FROM PRODUCT p
LEFT JOIN (
SELECT ITM.PRODUCT_NO
,LISTAGG(NVL2(QUANTITY, QUANTITY || (chr(13)||chr(10)), '0')) WITHIN
GROUP (
ORDER BY ITM.itm_no
) AS OPTIONS
FROM ITEM_INVENTORY ITM
GROUP BY ITM.PRODUCT_NO
) i ON (p.PRODUCT_NO = i.PRODUCT_NO)
WHERE P.PRODUCT_NO = K.PRODUCT_NO) as QTY
from PRODUCT K
一種選擇是升級到Oracle 12cR2它確實提供了處理溢出支持[瞭解更多](https://oracle-base.com/文章/ 12C/LISTAGG-功能的增強,12cr2#處理,溢出錯誤)。不是完全滑稽:Oracle 11g不是一個積極支持的版本。 – APC
使用oracle 11g的項目無法升級 –
我懷疑是這種情況,這就是爲什麼我把它作爲註釋發佈而不是答案。 – APC