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

SQL Server合并多表列生成统一作业表的实现方案

问题根因

原有写法的逻辑偏差在于将「纵向追加两类记录」的需求错误实现为「横向关联后替换字段值」:当表A作业存在对应返工记录时,LEFT JOIN会生成匹配行,此时CASE逻辑直接将该行的作业编号、数量替换为返工记录对应值,原始作业行被直接覆盖,最终仅返回无匹配返工的原始作业、所有返工作业两类数据,自然缺失存在对应返工的原始作业记录。

实现方案(SQL Server环境)

使用UNION ALL做纵向合并是最简洁高效的实现,无需复杂的关联补数逻辑,完全匹配需求:

  • 第一段查询直接读取表A全量原始作业记录,无需关联其他表
  • 第二段查询将表B关联表A,提取对应原始作业的产品、发布周字段,读取返工作业的编号、数量
  • 两段查询字段对齐后合并,最终输出刚好为3条原始作业+3条返工作业共6条记录

对应SQL代码如下:

-- 读取全量原始作业
SELECT 
    [Job Number],
    [Product],
    [Quantity],
    [Release Week]
FROM [Table A]

UNION ALL

-- 读取全量返工作业,关联原始作业补全字段
SELECT 
    B.[Remake Job Number] AS [Job Number],
    A.[Product],
    B.[Remake Quantity] AS [Quantity],
    A.[Release Week]
FROM [Table B] AS B
INNER JOIN [Table A] AS A 
    ON B.[Original Job Number] = A.[Job Number]

说明:上述代码中使用INNER JOIN是基于「返工作业必然关联有效原始作业」的业务规则,如果存在脏数据(返工记录无对应原始作业),可替换为LEFT JOIN,按需处理关联为空的字段值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:18:20