Конкататный агрегат T-SQL для SQL Server - PullRequest
2 голосов
/ 20 октября 2010

Представьте, что у меня есть эта таблица

BirthDay     |Name
1-10-2010    | 'Joe'
2-10-2010    | 'Bob' 
2-10-2010    | 'Alice'

Как я могу получить такой результат

BirthDay     |Name
1-10-2010    | 'Joe'
2-10-2010    | 'Bob', 'Alice 

tks

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

попробуйте это:

set nocount on;
declare @t table (BirthDay datetime, name varchar(20))
insert into @t VALUES ('1-10-2010',     'Joe'  )
insert into @t VALUES ('2-10-2010',     'Bob'  )
insert into @t VALUES ('2-10-2010',     'Alice')
set nocount off

SELECT p1.BirthDay,
          stuff(
                   (SELECT
                        ', ' + p2.name  --use this if you want quotes around the names:  ', ''' + p2.name+''''
                        FROM @t p2
                        WHERE p2.BirthDay=p1.BirthDay
                        ORDER BY p2.name
                        FOR XML PATH('') 
                   )
                   ,1,2, ''
               ) AS Names
      FROM @t p1
     GROUP BY 
        BirthDay

ВЫХОД:

BirthDay                Names
----------------------- ------------
2010-01-10 00:00:00.000 Joe
2010-02-10 00:00:00.000 Alice, Bob

(2 row(s) affected)
0 голосов
/ 10 ноября 2015

Это решение работает без необходимости развертывания из Visual Studio или файла DLL на сервере.

Copy-Paste и это работает!

http://groupconcat.codeplex.com/

dbo.GROUP_CONCAT(VALUE )
dbo.GROUP_CONCAT_D(VALUE ), DELIMITER )  
dbo.GROUP_CONCAT_DS(VALUE , DELIMITER , SORT_ORDER )
dbo.GROUP_CONCAT_S(VALUE , SORT_ORDER )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...