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

SQL插入/UNION ALL仅返回最后一张表数据问题排查

问题原因分析

1. 临时表#tmpSources的类别数据错误

你的代码中插入#tmpSources时,Category字段被硬编码为固定字符串'category':

INSERT INTO #tmpSources
SELECT 'category', a, b, c, d, e, f, code, xtype, SUM(num) as num
...

这导致#tmpSources中所有数据的Category值都是'category',根本不存在'A'或'B'类别。后续两个INSERT语句里的WHERE Category = 'A'和Category = 'B'条件,第一个查询完全匹配不到数据,只有当第二个INSERT的条件实际能命中(比如你实际代码中这里是笔误,应该是从源表取Category值),才会有数据插入到#tmpFinalSource。

2. 非法字段[All]导致的筛选错误

你的所有查询块中都用到了WHERE [All] = 1条件,但#tmpSources的表结构里根本没有All这个字段。这要么会直接触发语法错误,要么是你笔误写错了字段名(比如应该是源表中的某个字段,却没同步到#tmpSources里)。如果第一个INSERT的[All] =1条件实际无法匹配任何数据,自然不会插入A类数据,最终只有第二个INSERT的B类数据能被写入。

关于UNION ALL仅返回B类结果的原因

本质和上面一致:UNION ALL合并的两个查询块中,第一个查询(A类)因为Category或[All]条件不匹配,返回空结果集,只有第二个查询(B类)能返回数据,所以最终结果只显示B类内容。

修复建议

  • 修正#tmpSources的插入语句,从源表(比如#tempRawSource)获取实际的Category值,而不是硬编码:
    INSERT INTO #tmpSources
    SELECT t.Category, a, b, c, d, e, f, code, xtype, SUM(num) as num
    FROM #tempRawSource t
    JOIN dbo.TAB_SourceTable vbls ON vbls.ID = t.code
    GROUP BY t.Category, a, b, c, d, e, f, t.code, vbls.xtype;
    
  • 检查[All] =1条件中的字段名,确保#tmpSources表中存在该字段,或者修正为正确的字段(比如如果是源表的字段,需要在插入#tmpSources时一并加入表结构和查询中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:30:51