You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2016中结合GROUP BY与FOR XML PATH按ID聚合多行评论

解决方案

你只需把固定ID的筛选改为和外层查询的ID关联即可实现按ID分组聚合,不需要额外加GROUP BY子句,修改后的代码如下(兼容你原有写法逻辑):

SELECT 
    DISTINCT c.ID,
    SUBSTRING((SELECT Comment
               FROM Comments c_inner
               WHERE c_inner.ID = c.ID AND c_inner.RegionCode != 2
               FOR XML PATH('')), 1, 999999) AS Comment_Agg
FROM Comments c

如果需要给评论之间加分隔符(比如空格、逗号),或者避免评论内的特殊字符(&、<、>等)被XML转义,建议使用优化写法:

SELECT 
    DISTINCT c.ID,
    -- 示例用空格作为评论分隔符,可按需替换为其他字符
    STUFF((SELECT ' ' + Comment
           FROM Comments c_inner
           WHERE c_inner.ID = c.ID AND c_inner.RegionCode != 2
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS Comment_Agg
FROM Comments c

逻辑说明

  • 外层查询通过DISTINCT c.ID拿到所有需要分组的ID,替代原来写死的ID = 1006固定值
  • 子查询通过c_inner.ID = c.ID关联外层的ID,自动按ID维度聚合符合条件的评论内容
  • 优化写法中TYPE+value的组合可以避免特殊字符被XML转义,STUFF函数用来删除第一个多余的分隔符

内容的提问来源于stack exchange,提问作者user9532692

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:18:03