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

SQL Server 2008:子查询分组拼接pastduereccount字段问题

解决SQL中相同ID行的HTML内容拼接问题

我来帮你搞定这个SQL拼接的问题!你现在遇到的情况是相同lastinspectionid的两行数据,想要把对应的pastduereccount(HTML内容)合并成一行,之前用STUFF+FOR XML PATH的方法没成功,大概率是两个核心问题:要么子查询没关联主表的ID,要么HTML里的特殊字符被XML自动转义了。下面给你两种针对性的解决方案:

方案1:保留原始HTML格式(推荐)

如果你的pastduereccount是HTML内容,想要保留<、>、&这些字符不被转义成实体编码(比如&lt;),一定要用TYPE参数配合.value()方法:

SELECT 
    lastinspectionid,
    PastDueRecCount2 = STUFF(
        (
            -- 子查询必须关联主表的lastinspectionid,只拼接同ID的内容
            SELECT ' ' + PastDueRecCount 
            FROM YourTableName t2
            WHERE t2.lastinspectionid = t1.lastinspectionid
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'), -- 把XML类型转换成原始字符串
        1, 1, '' -- 去掉开头多余的空格
    )
FROM YourTableName t1
GROUP BY lastinspectionid;

方案2:普通字符串拼接

如果你的内容不需要保留HTML特殊字符,或者字符都是安全的,可以用简化版的写法,但同样要保证子查询和主表的ID关联:

SELECT 
    lastinspectionid,
    PastDueRecCount2 = STUFF(
        (
            SELECT ' ' + PastDueRecCount 
            FROM YourTableName t2
            WHERE t2.lastinspectionid = t1.lastinspectionid
            FOR XML PATH('')
        ),
        1, 1, ''
    )
FROM YourTableName t1
GROUP BY lastinspectionid;

注意事项

  • 记得把代码里的YourTableName替换成你实际使用的表名
  • 如果需要调整拼接的分隔符(比如HTML里换行用<br>),直接把' '换成你想要的分隔符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:32:28