MS SQL - 按concat字符串分组

时间:2016-03-02 11:38:30

标签: sql sql-server

我是编写SQL脚本的新手(至少比SELECT * FROM X更多)。我遇到了一个问题,将一个表分组为一个值,然后将另一个列的值连接成一个字符串。

我想在临时表上执行一个组,然后将组中列的值连接在一起。

表变量(编辑),@ categoryToAdd,数据结构是[SubscriberId int,CategoryId int]。

我想要做的是(我的理解是,CONCAT在MSSQL中有点缺失):

SELECT SubscriberId, 
       CONCAT(CONVERT(VARCHAR(10), CategoryId) + ', ') as categoriesAdded
FROM   @categoriesToAdd
GROUP BY SubscriberId

每个订阅者的连接类别ID将如下所示: 0001 0002,0003,0004

谢谢!

1 个答案:

答案 0 :(得分:3)

在sql server中,您可以使用FOR XML PATH

select  SubscriberId,
categoriesAdded=Stuff((SELECT ',' + CAST(CategoryId as VARCHAR(255)) FROM catsToAdd t1 WHERE t1.SubscriberId=@categoriesToAdd.SubscriberId
 FOR XML PATH (''))
             , 1, 1, '' )
from @categoriesToAdd as catsToAdd
GROUP BY SubscriberId