SQL将列值汇总为1个合并值

SQL将列值汇总为1个合并值,sql,sql-server,Sql,Sql Server,需要什么样的SQL按GroupID分组,然后用逗号分隔所有名称值,将它们合并成一行 因此: GroupName GroupID Name All screens 139091 Business All screens 139091 Business All screens 139091 Cafeteria/Bathrooms All screens 139091 Lobby 将变成这样: GroupName GroupID Name All screens 139091 B

需要什么样的SQL按GroupID分组,然后用逗号分隔所有名称值,将它们合并成一行

因此:

GroupName   GroupID Name
All screens 139091  Business
All screens 139091  Business 
All screens 139091  Cafeteria/Bathrooms
All screens 139091  Lobby
将变成这样:

GroupName   GroupID Name
All screens 139091  Business, Cafeteria/Bathrooms, Lobby
这将需要在表中有多少个GroupID上完成,我猜会跳过重复项。在C端这样做更好吗?SQL版本是2008 R2


SQL Server中不存在可供使用的组\u Concat

希望这能帮助您解决问题

   SELECT GroupName, GROUPID , STUFF(( SELECT ',' + NAME FROM #TAB FOR XML PATH('')),1,1,'')
   FROM #TAB GROUP BY GROUPNAME, GROUPID

Google:SQL Server聚合字符串连接。最常见的是XML+格式,以避免重复使用DISTINCT in SUBQUERY您需要在嵌套查询中添加WHERE子句。。。否则,当您有不同的组ID/名称时,这不会像预期的那样起作用。@Lucero WHERE条件需要是什么?@JoJo可能GroupID将是您要加入的列:从选项卡T2中选择T1.GroupName、T1.GroupID、STUFFSELECT'、'+T2.NAME,其中T1.GroupID=T2.GroupID表示XML路径,1,1,从选项卡T1按T1.GroupName分组,T1.GroupID