如何将多个列中的唯一行值合并到一个列中?

时间:2014-05-19 12:56:01

标签: postgresql

我正在对多行执行一系列聚合。我正在通过一个公共列进行分组,但我有一些小字段,我想将所有唯一值合并到一个列中。

以下示例没有用于简化问题的汇总计算。

例如:

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中执行此操作?

1 个答案:

答案 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
;