SQL Объединить несколько строк в один столбец и получить имя из идентификаторов - PullRequest
0 голосов
/ 04 июня 2018

Рассмотрим таблицу базы данных connectouser, содержащую два идентификатора:

 connectouser
compID    coopID
   1         1
   1         2
   1         3
   2         1
   2         2

Рассмотрим другую таблицу базы данных coop, содержащую два идентификатора:

coop
ID   Name
1     ABC
2     DEF
3     GHJ

Я хочу следующий вывод:

Result
compID   coopname
1        ABC,DEF,GHJ
2        ABC,DEF

Может кто-нибудь, пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 04 июня 2018

Вопрос был помечен MySQL для этого ответа.

Это группа и group_concat():

select cu.compId, group_concat(co.name order by co.id) as coopnames
from connectouser cu join
     coop co
     on cu.coopID = co.ID
group by cu.compId;

В SQL Server вы можете сделать:

select cu.compId,
       stuff( (select ',' + co.name
               from coop co
               where cu.coopID = co.ID
               order by co.id
               for xml path ('')
              ), 1, 1, ''
            ) as names
from connectouser cu;

Самая последняя версия SQL Server поддерживает string_agg(), что является гораздо лучшим подходом.

...