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

SQL Server中按ID分组拼接ValueField字段值的实现问题

解决方案

在SQL Server中,你可以通过STUFF结合FOR XML PATH的方式实现分组拼接字符串,替代MySQL的GROUP_CONCAT。以下是修改后的完整代码:

SELECT 
    inn.ID,
    STUFF(
        (
            SELECT ', ' + ValueField
            FROM inn AS sub
            WHERE sub.ID = inn.ID
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'),
        1, 2, ''
    ) AS FieldValue
FROM
(
    SELECT te2.Root_ID AS ID, te1.ValueField 
    FROM TableExample2 AS te2
    LEFT JOIN TableExample1 te1 ON te2.te1ID = te1.ID
    WHERE te1.Deleted = 0
    GROUP BY te2.Root_ID, te1.ValueField

    UNION ALL

    SELECT ID, ValueField          
    FROM TableExample1 AS main
    WHERE ID IS NOT NULL
) AS inn
GROUP BY inn.ID

关键部分说明

  1. FOR XML PATH(''):将同一ID下的所有ValueField值以, 为分隔符拼接成一段XML文本,结果类似, FV1, FV55, FV66。
  2. TYPE 与 .value('.', 'NVARCHAR(MAX)'):将XML文本转换为普通字符串,同时避免特殊字符(如&、<、>)被转义,保证拼接结果的准确性。
  3. STUFF函数:移除拼接结果开头多余的, (从第1个字符开始,删除2个字符长度),得到干净的拼接字符串。

如果需要对ValueField进行去重(比如UNION ALL结果中存在重复值),可以在子查询中添加DISTINCT:

SELECT ', ' + DISTINCT ValueField
FROM inn AS sub
WHERE sub.ID = inn.ID
FOR XML PATH(''), TYPE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:17:18