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

如何基于唯一ID拼接SQL Server多行数据?现有脚本故障求助

SQL Server 按唯一ID拼接多行数据修正方案

你的原脚本存在两个核心问题:

  • 子查询未关联外部临时表#Transcripts的唯一ID,导致会拼接整个MyTableName表的所有Transcript内容,而非按单个ID分组处理
  • 子查询与外部表无关联逻辑,无法匹配到对应ID的记录

以下是修正后的脚本,假设唯一ID列名为ID,请根据实际表结构替换:

方案1:拼接时去重重复的Transcript内容

SELECT 
    t.ID,
    STUFF((
        SELECT DISTINCT ', ' + CAST(mt.Transcript AS VARCHAR(MAX))
        FROM MyTableName mt
        WHERE mt.ID = t.ID  -- 关联当前ID,仅拼接该ID对应的记录
        FOR XML PATH(''), TYPE
    ).value('.', 'VARCHAR(MAX)'), 1, 2, '') AS Transcript_Combined
FROM #Transcripts t
GROUP BY t.ID;

方案2:保留所有对应记录的内容(不去重)

SELECT 
    t.ID,
    STUFF((
        SELECT ', ' + CAST(mt.Transcript AS VARCHAR(MAX))
        FROM MyTableName mt
        WHERE mt.ID = t.ID
        FOR XML PATH(''), TYPE
    ).value('.', 'VARCHAR(MAX)'), 1, 2, '') AS Transcript_Combined
FROM #Transcripts t
GROUP BY t.ID;

关键说明

  1. 必须通过WHERE mt.ID = t.ID建立子查询与外部表的关联,确保每个ID仅处理自身对应的Transcript数据
  2. 外部查询通过GROUP BY t.ID保证每个唯一ID只输出一行合并结果
  3. 若你的唯一ID列名不是ID,请将所有ID替换为实际列名
  4. 确认MyTableName和#Transcripts中用于关联的字段逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:00:08