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

SQL Server 2014报表避免重复行 无STRING_AGG如何拼接同组字段值

解决方案

SQL Server 2014 不支持 STRING_AGG 函数,你可以使用 FOR XML PATH 搭配 STUFF 函数实现分组字符串拼接需求,完整查询语句如下:

SELECT 
    REF,
    STUFF((
        SELECT ',' + Field1 
        FROM yourtable t2 
        WHERE t2.REF = t1.REF
        FOR XML PATH(''), TYPE
    ).value('.', 'VARCHAR(100)'), 1, 1, '') AS [Field 1],
    STUFF((
        SELECT ',' + Field2 
        FROM yourtable t2 
        WHERE t2.REF = t1.REF
        FOR XML PATH(''), TYPE
    ).value('.', 'VARCHAR(100)'), 1, 1, '') AS [Field 2]
FROM yourtable t1
GROUP BY REF

语法说明

  • FOR XML PATH('') 会将分组内的多行查询结果拼接为无外层标签的XML字符串,自动把每个值前的逗号拼接在一起,最终生成形如,a,b,c的字符串
  • STUFF 函数的作用是删掉字符串开头多余的第一个逗号:参数1为待处理字符串,参数2为删除起始位置,参数3为删除的字符长度,参数4为替换为空字符串
  • 末尾的.value('.', 'VARCHAR(100)') 可以避免&、<这类特殊字符被自动转义为HTML实体,保证输出内容和原始字段值完全一致
  • 外层查询用GROUP BY REF保证每个REF值仅输出一行

直接基于你提供的测试表执行上述语句,即可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:12:01