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。
我是 运行 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。