En mulighed er først at gruppere efter x
og brug array_agg()
for at få de indre arrays. Aggreger derefter igen ved hjælp af array_agg()
for at få de indre arrays til én ydre array.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;