0

我有一张这样的桌子:

user 1    A
user 1    B
user 2    H
user 2    G
user 2    A

我需要这样的结果:

user 1   AB
user 2  HGA

有没有办法获得这样的结果?

4

2 回答 2

0

所以在这里我们创建一些测试数据

CREATE TABLE foo AS
SELECT * FROM (
    VALUES (1,'A'),(1,'B'),(2,'H'),(2,'G'),(2,'A')
) AS f(id,col);

这应该工作,

SELECT id, array_to_string(array_agg(col), '')
FROM table
GROUP BY id;

这是我们正在做的,

  1. 按 ID 分组。
  2. 构建text[]该列的PostgreSQL(文本数组)array_agg
  3. 通过在空字符串 '' 上加入 . 将数组转换回文本array_to_string

你也可以使用string_agg

SELECT id, string_agg(col, '')
FROM foo
GROUP BY id;
于 2016-12-01T23:30:05.117 回答
0

更好的解决方案是使用str_sum聚合函数

select 
user,
str_sum(column_name,'')
from table_name
group by user;
于 2016-12-02T08:51:21.810 回答