SQL 为 A 列中的所有值连接 B 列中与 A 列中具有相同值的所有值

SQL Concatenate all values in column B that have same value in column A for all values in column A

我是 运行 PostgreSQL 12.4。我有一个相对较大的 table,如下所示,其中第 1 列和第 2 列都是 character varying 类型:

|---------------------|------------------|
|       Column 1      |     Column 2     |
|---------------------|------------------|
|         foo         |         X        |
|---------------------|------------------|
|         foo         |         Y        |
|---------------------|------------------|
|         foo         |         Z        |
|---------------------|------------------|
|         bar         |         A        |
|---------------------|------------------|
|         bar         |         B        |
|---------------------|------------------|
|         bar         |         C        |
|---------------------|------------------|

我想创建如下内容:

|---------------------|------------------|
|       Column 1      |     Column 2     |
|---------------------|------------------|
|         foo         |      X, Y, Z     |
|---------------------|------------------|
|         bar         |      A, B, C     |
|---------------------|------------------|

有没有简单的方法来做到这一点?

您可以使用 string_agg:

select column1, string_agg(column2, ', ')
from table_name
group by column1

您可以找到更多信息 here