我正在对多行执行一系列聚合。我正在通过一个公共列进行分组,但我有一些小字段,我想将所有唯一值合并到一个列中。
以下示例没有用于简化问题的汇总计算。
例如:
Table A
table_a_id integer,
column_1 integer,
column_2 text,
column_3 integer
SELECT table_a_id, column1, column_2, column_3
FROM table_a;
产量
101 | 1 | 'sample value 1' | 20
101 | 2 | 'sample value 2' | 25
101 | 3 | 'sample value 3' | 27
我想:
101 | 1, 2, 3 | 'sample value 1, sample value 2, sample value 3' | 20, 25, 27
如何在PostgreSQL中执行此操作?
答案 0 :(得分:2)
select
table_a_id,
array_to_string(array_agg(distinct column_1), ',') AS the_ones,
array_to_string(array_agg(distinct column_2), ',') AS the_twos,
array_to_string(array_agg(distinct column_3), ',') AS the_threes
from table_a
group by table_a_id
;