У меня проблема с объединением всех моих данных из многих больших таблиц.Я задал вопрос вчера относительно этого, но, к сожалению, кажется, Listagg не является хорошим вариантом.ссылка подзапрос возвращает более одной строки
Я пытался использовать xmllagg после того, как listagg не использовал усечение для моей версии oracle 12.0.1, первый код, показанный ниже,данный подзапрос возвращает более одной строки ...
SELECT rtrim(xmlagg(XMLELEMENT(e,table1.DESCRIPTION,',').EXTRACT ('//text()')
).GetClobVal(),',')
FROM table1
left join table2 on table1.app = table2.app
AND LANGUAGE = 2
GROUP BY table2.app
Второй код, использующий другой метод, все еще говорит, что слишком много значений в первой строке
SELECT nvl(max(case when language = 2 then description end), 'NULL') key_event, rtrim(xmlagg(XMLELEMENT (e,table1.DESCRIPTION,',').EXTRACT ('//text()')
).GetClobVal(),',')
FROM table1
left join table2 on table1.app = table2.app
AND LANGUAGE = 2
GROUP BY table2.app
Я проверил эти 2Коды в этой ссылке dbfiddle и она работает.Я хочу, чтобы результат был как эта ссылка
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=40852eaeaa8f334f77364eef77ffbe68

Я получил результат, тестируя его как маленький бит, но когдая пытаюсь использовать полный код, просто посмотрите на этот код, он не работает, см. код и ошибку ниже ошибка: подзапрос возвращает более одной строки
SELECT
NVL(TO_CHAR(D_TRANS.TRANS), 'NULL') AS ID,
'HEADER'
, (SELECT L_APPLICATION.APPLICATION FROM L_APPLICATION L_APPLICATION WHERE LANGUAGE = 2 AND APPLICATION = D_TRANS.APPLICATION) AS CASE_TYPE
, NVL(TO_CHAR(D_TRANS.UNIT_IN_CHARGE), 'NULL') AS UNIT_IN_CHARGE
, NVL(TO_CHAR(D_TRANS.PERSON_IN_CHARGE), 'NULL') AS PERSON_IN_CHARGE
, NVL(TO_CHAR(D_TRANS.STATUS), 'NULL') AS CASE_STATUS
, NVL(TO_CHAR(D_TRANS.DEADLINE), 'NULL') AS INTERNAL_DEADLINE
(SELECT D_SYNERGI_CATEGORY.TRANS, nvl(max(case when language = 2 then description end), 'NULL') AS ADE , rtrim(xmlagg(XMLELEMENT (e,L_CASE_CATEGORY.DESCRIPTION,',').EXTRACT('//text()')
).GetClobVal(),',')
FROM L_CASE_CATEGORY
left join D_SYNERGI_CATEGORY on D_SYNERGI_CATEGORY.CASE_CATEGORY = L_CASE_CATEGORY.CASE_CATEGORY
GROUP BY D_SYNERGI_CATEGORY.TRANS
)
)
FROM D_TRANS
FULL OUTER JOIN D_SPILL
ON D_TRANS.TRANS=D_SPILL.TRANS
ORDER BY D_TRANS.TRANS DESC;
Когда я тестировал этот небольшой бит этого коданиже это работает.
(SELECT D_SYNERGI_CATEGORY.TRANS, nvl(max(case when language = 2 then description end), 'NULL') AS ADE , rtrim(xmlagg(XMLELEMENT(e,L_CASE_CATEGORY.DESCRIPTION,',').EXTRACT('//text()')
).GetClobVal(),',')
FROM L_CASE_CATEGORY
left join D_SYNERGI_CATEGORY on D_SYNERGI_CATEGORY.CASE_CATEGORY = L_CASE_CATEGORY.CASE_CATEGORY
GROUP BY D_SYNERGI_CATEGORY.TRANS
)
Я не эксперт в Oracle.Любое предложение ?