本文介绍了无法汇总阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以创建一个数组的数组:

I can create an array of arrays:

select array[array[1, 2], array[3, 4]];
     array     
---------------
 {{1,2},{3,4}}

但我不能聚集数组:

But I can't aggregated arrays:

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[]

我是什么失踪?

推荐答案

我使用的:

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;

请注意,您必须汇总2维数组,所以你经常要在一个单一的元素来包装一个输入数组 ARRAY [array_to_aggregate] 数组构造。

Note that you must aggregate 2-dimensional arrays, so you'll often want to wrap an input array in a single-element ARRAY[array_to_aggregate] array constructor.

这篇关于无法汇总阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 18:06