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

SQL Server 2008两表关联时拼接item_number列的实现方法

SQL Server 2008 实现分组拼接字段的方案

SQL Server 2008 没有后续版本内置的STRING_AGG聚合函数,需要配合FOR XML PATH语法和STUFF函数实现同分组下的字段拼接,完整查询语句如下:

SELECT
    o.order_id,
    o.order_total,
    STUFF(
        (
            SELECT ', ' + i.item_number
            FROM Items i
            WHERE i.order_id = o.order_id
            -- 如果需要指定拼接顺序可以加ORDER BY子句,不需要可删除
            ORDER BY i.item_number
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'),
    1, 2, '') AS item_number_concat
FROM Orders o
GROUP BY o.order_id, o.order_total

关键逻辑说明

  • 子查询中FOR XML PATH('')会把查询到的多行item_number值统一拼接为单字符串,每个值前面统一加, 前缀,所以最终拼接结果开头会多出来长度为2的多余字符(逗号+空格)
  • STUFF函数的作用就是删除字符串开头的2个冗余字符,得到符合要求的拼接结果
  • 加上TYPE和.value的写法可以避免特殊字符(比如&、<)被自动转义的问题,兼容性更好
    用你提供的示例数据执行以上语句,即可得到期望的查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:03