【问题标题】:How to group by in FOR XML clause in SQL Server 2014?如何在 SQL Server 2014 的 FOR XML 子句中分组?
【发布时间】:2020-11-28 17:19:10
【问题描述】:

我在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() 的选项。

【问题讨论】:

    标签: group-by sql-server-2014 for-xml-path


    【解决方案1】:

    我相信,如果您想获得所需的输出,您还必须在相关子查询(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
    

    【讨论】:

    • Opps 我忘了添加“AND EE.weekcounter = E.weekcounter”这个简单的部分谢谢哥们!!
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-04-04
    相关资源
    最近更新 更多