我是编写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
谢谢!
答案 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