Een mogelijkheid is om eerst te groeperen op x
en gebruik array_agg()
om de binnenste arrays te krijgen. Verzamel vervolgens opnieuw met array_agg()
om de binnenste arrays in één buitenste array te krijgen.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;