제품에서 인벤토리 데이터를 가져 오는이 쿼리가 있고이 목록 집계 쿼리를 사용하기 위해 한 열에서 수행해야합니다 (추가 정보 : 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
하나의 옵션을 찾을 수 있습니다 https://oracle-base.com/ ([자세한 내용을 보려면] articles/12c/listagg-function-enhancements-12cr2 # handling-overflow-errors). 완전히 익살 맞은 것은 아닙니다 : Oracle 11g는 적극 지원되는 버전이 아닙니다. – APC
오라클 11g를 사용하는 프로젝트이며 업그레이드 할 수 없습니다. –
그럴 것이라고 생각했기 때문에 답변이 아닌 의견으로 게시했습니다. – APC