Я пытаюсь использовать LISTAGG в Redshift для агрегирования данных, а затем объединить строку с результатом LISTAGG.
tmp_table:
Col1 Col2
1 A
1 B
1 C
2 A
2 B
Я бы хотел сделать что-то вроде этого:
CREATE TABLE new_table AS (
SELECT
Col1,
'{"results" : "' || LISTAGG(Col2, ',') WITHIN GROUP (ORDER BY Col1) || '"}' as list_result
FROM
tmp_table
GROUP BY
1
)
С идеальным результатом, похожим на это:
new_table:
Col1 Col2
1 {"results" : "A,B,C"}
2 {"results" : "A,B"}
Запуск без конкатенированных строк работает нормально, но как только я конкатенирую строку, я получаю:
ERROR: Column length exceeds maximum allowed (maximum column length is 65535)
Я уверен, что это не превышает длину столбца, так как я проверил длину самого длинного результата LISTAGG, и это всего 30 символов. Я также пытался разыграть результат LISTAGG как VARCHAR (MAX), но безуспешно.