Я пытаюсь собрать целочисленные массивы разной длины. Этот ответ дополняется нулями, и я пытаюсь включить его в свой запрос.
Вот мои данные:
id | col
-----+---------
1 | {5,3}
1 | {6,4}
2 | {3}
2 | {2,3}
Вот мой желаемый результат
id | col
-----+---------
1 | {{5,3},{6,4}}
2 | {{3,NULL},{2,3}}
См. DBFiddle
Этомой текущий запрос, который агрегирует по идентификатору, но выводит дубликаты.Я впервые использую функцию LATERAL
, поэтому не знаю, правильный ли это подход.
SELECT
array_agg(
array_cat(
col,
array_fill(NULL::smallint, ARRAY[lat-COALESCE(array_length(col, 1),0)])
)
) AS result
,tab.id
FROM tab
,LATERAL (SELECT id,MAX(array_length(col,1)) AS lat
FROM tab GROUP BY id) s
GROUP BY tab.id