LISTAGG
имеет ограничение в 4000 символов. Кто-нибудь может помочь с этим кошмарным запросом?
Привет, у меня плохой код в запросе, который передает приложение. В этой форме запрос не имеет реальных критериев. И из-за этого LISTAGG
достигает предела 4000 символов.
Есть ли здесь другой вариант? Исходя из того, как все соединено, я не вижу простого ответа:
SELECT
email,
first_name,
last_name,
LISTAGG(
type_id
||','|| type_status
||','|| filename
||','|| status_id
||','|| status_message
||','|| TO_CHAR(upload_date,'MM/DDYYYY')
||','|| broker
||','|| quarter
||','|| quarter_year
||':'
) WITHIN GROUP (ORDER BY upload_date DESC) filenames
FROM
(
SELECT
b.surrogate_key,
b.email,
b.type_id,
DECODE(a.file_type,NULL,0,1) type_status,
a.quarter,
a.quarter_year,
a.broker,
a.upload_date,
a.filename,
a.status_id,
b.first_name,
b.last_name,
a.status_message
FROM
(
SELECT DISTINCT
(editor || '~' || file_type) surrogate_key,
file_type,
quarter,
quarter_year,
broker,
filename,
upload_date,
status_id,
status_message
FROM upload_history
ORDER BY upload_date DESC
) a,
(
SELECT DISTINCT
(email||'~'||type_id) surrogate_key,
email,
type_id,
first_name,
last_name
FROM issuers
CROSS JOIN file_types
) b
WHERE
b.surrogate_key = a.surrogate_key(+)
)
GROUP BY
email,
first_name,
last_name,
type_id,
quarter,
quarter_year;