如何在 SQL Server 2014 中的 FOR XML 子句中分组?

How to group by in FOR XML clause in SQL Server 2014?

我在 fiddle

中有这个架构

我的代码:

SELECT  
    MUID, weekcounter,
    STUFF((SELECT  ',' + Category
           FROM tb EE
           WHERE EE.MUID = E.MUID AND Ranknum <= 3
           FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') AS listStr
FROM tb E
GROUP BY E.MUID, E.weekcounter

我得到这样的错误输出:

我期待这个输出:

我没有在 SQL Server 2014 中使用 string_aggr() 的选项。

我相信如果您想获得所需的输出,您也必须在相关子查询(STUFF 部分)中使用您想要分组的两列。

试试这个代码:

SELECT  
    MUID, weekcounter,
    STUFF((SELECT  ',' + Category
           FROM tb EE
           WHERE EE.MUID = E.MUID 
             AND EE.weekcounter = E.weekcounter
             AND Ranknum <= 3
           FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') AS listStr
FROM 
    tb E
GROUP BY 
    E.MUID, E.weekcounter