我可以创建一个数组数组:
select array[array[1, 2], array[3, 4]];
array
---------------
{{1,2},{3,4}}
但我不能聚合数组:
select array_agg(array[c1, c2])
from (
values (1, 2), (3, 4)
) s(c1, c2);
ERROR: could not find array type for data type integer[]
我错过了什么?
答案 0 :(得分:15)
我用:
CREATE AGGREGATE array_agg_mult(anyarray) (
SFUNC = array_cat,
STYPE = anyarray,
INITCOND = '{}'
);
和类似的查询:
SELECT array_agg_mult( ARRAY[[x,x]] ) FROM generate_series(1,10) x;
请注意,您必须聚合二维数组,因此您通常希望将输入数组包装在单元素ARRAY[array_to_aggregate]
数组构造函数中。