GROUP BY组合/连接一列

我有一个表格如下:

ID User Activity PageURL 1 Me act1 ab 2 Me act1 cd 3 You act2 xy 4 You act2 st 

我想按用户和活动进行分组,以便最终得到类似于以下内容的内容:

 User Activity PageURL Me act1 ab, cd You act2 xy, st 

正如你所看到的那样,PageURL这个列被合并在一起,并且由基于group的逗号分隔。

真的很感激任何指针和build议。

 SELECT [User], Activity, STUFF( (SELECT DISTINCT ',' + PageURL FROM TableName WHERE [User] = a.[User] AND Activity = a.Activity FOR XML PATH ('')) , 1, 1, '') AS URLList FROM TableName AS a GROUP BY [User], Activity 
  • SQLFiddle演示

一个很好的问题。 应该告诉你,它需要一些时间来破解这一个。 这是我的结果。

 DECLARE @TABLE TABLE ( ID INT, USERS VARCHAR(10), ACTIVITY VARCHAR(10), PAGEURL VARCHAR(10) ) INSERT INTO @TABLE VALUES (1, 'Me', 'act1', 'ab'), (2, 'Me', 'act1', 'cd'), (3, 'You', 'act2', 'xy'), (4, 'You', 'act2', 'st') SELECT T1.USERS, T1.ACTIVITY, STUFF( ( SELECT ',' + T2.PAGEURL FROM @TABLE T2 WHERE T1.USERS = T2.USERS FOR XML PATH ('') ),1,1,'') FROM @TABLE T1 GROUP BY T1.USERS, T1.ACTIVITY