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

SQL Server 2012如何用GROUP BY实现分组合并文本值

MSSQL Server 2012 分组拼接字符串实现方案

SQL Server 2012版本未内置STRING_AGG聚合函数,需要通过FOR XML PATH语法实现同组文本值的逗号拼接需求,可直接使用以下SQL语句(注意将代码中的YourTableName替换为实际的表名):

SELECT 
    t1.Col1,
    STUFF(
        (
            SELECT ',' + t2.Col2
            FROM YourTableName t2
            WHERE t2.Col1 = t1.Col1
            -- 若需要指定拼接顺序可保留以下排序语句,不需要可删除
            ORDER BY t2.Col2
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'),
    1, 1, '') AS Col2
FROM YourTableName t1
GROUP BY t1.Col1

语法说明

  • FOR XML PATH(''):将子查询的结果以XML格式拼接,传入空参数会省略默认的行标签,直接返回文本拼接结果
  • TYPE:指定返回结果为XML类型,避免值中的特殊字符(如<、>、&)被自动转义
  • .value('.', 'NVARCHAR(MAX)'):将XML类型的拼接结果转换为普通字符串类型
  • STUFF(..., 1, 1, ''):移除拼接结果开头多余的第一个逗号

扩展说明

  • 如果需要对拼接的Col2值去重,可在子查询的SELECT后添加DISTINCT关键字:SELECT DISTINCT ',' + t2.Col2
  • 如果Col2存在NULL值,可将子查询中的t2.Col2替换为ISNULL(t2.Col2, ''),避免NULL值导致整组拼接结果为NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:03