SQL объединить все значения в столбце B, которые имеют одинаковое значение в столбце A для всех значений в столбце A

#sql #postgresql #group-by #string-aggregation

#sql #postgresql #группировать по #строка-агрегация

Вопрос:

Я использую 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     |
|---------------------|------------------|
  

Есть ли простой способ сделать это?

Ответ №1:

Вы можете использовать string_agg :

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

Вы можете найти более подробную информацию здесь.

Комментарии:

1. @Xela вы можете поблагодарить меня, проголосовав и приняв ответ;>