使用Postgres 9.5,我想从GROUP BY中继承整数数组。从文档看来似乎array_agg应该能够做到这一点,但我得到:ERROR: cannot accumulate arrays of different dimensionality
在我的测试集上使用array_dims我得到[1:18],[1:24]和[1:48]。我将其视为3个不同长度的1维阵列。结果应该是一个维度为[1:90]的单个数组我在这里缺少什么?
答案 0 :(得分:5)
继续评论中的讨论,我的个人建议是创建聚合。
CREATE AGGREGATE array_concat_agg(anyarray) (
SFUNC = array_cat,
STYPE = anyarray
);
然后你可以这样做:
SELECT column1
FROM (VALUES (array[1,2,3]), (array[3,4]), (array[53,43,33,22])) arr;
column1
---------------
{1,2,3}
{3,4}
{53,43,33,22}
(3 rows)
SELECT array_concat_agg(column1)
FROM (VALUES (array[1,2,3]), (array[3,4]), (array[53,43,33,22])) arr;
array_concat_agg
-------------------------
{1,2,3,3,4,53,43,33,22}
(1 row)