SQL将B列中与A列中的所有值具有相同值的B列中的所有值连接在一起

问题描述

我正在运行PostgreSQL 12.4。我有一个相对较大的表,如下所示,其中列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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...