Infelizmente, o PostgreSQL não suporta o padrão SQL
MULTISET
operador, nem conjuntos aninhados em geral. Você pode criar um ARRAY
de ROW
tipos assim:select array[row(1, 2), row(3, 4)]
E você pode até desaninhar a matriz acima
select * from unnest(array[row(1, 2), row(3, 4)]) t(a int, b int)
Então, se um
ARRAY
de ROW
é aceitável para você, você pode escrever algo assim:select array_agg(row(a, b))
from (
select ...
) t(a, b)
Se você tiver seu próprio
OBJECT
digite no PostgreSQL, você pode converter o anônimo ROW
ao seu tipo:select array_agg(row(a, b)::your_type)
from (
select ...
) t(a, b)