次の CTE を想定します。
with mytable as (
select column1 as foo, column2 as bar, column3 as baz
from (values
('a', 'b', 1),
('c', 'd', 2)
) v
)
を使用array_agg()
すると、値の配列が出力されます。
select
array_agg(v)
from mytable v;
-- {"(a,b,1)","(c,d,2)"}
しかし驚くべきことに (少なくとも私には)、to_json()
この配列を使用すると、フィールド名が各行のオブジェクトに復元されます
select
to_json(array_agg(v))
from mytable v;
-- [{"foo":"a","bar":"b","baz":1},{"foo":"c","bar":"d","baz":2}]
各行を値の配列としてレンダリングする代わりに、PostgreSQL に配列の配列を出力させるにはどうすればよいでしょうか?
select
something(v)
from mytable v;
-- [["a", "b", 1],["c", "d", 2]]