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

SQL关联BaseDipline模板表与真实表缺失匹配行问题求解

问题原因
  • 关联方式使用了INNER JOIN,仅返回两张表满足关联条件的匹配行,模板表中无对应业务数据的行直接被过滤,需改为LEFT JOIN保留模板表的全部行。
  • 原SQL将业务表的日期筛选写在WHERE子句中,LEFT JOIN后无匹配的行PackDate为NULL,会被WHERE条件过滤,等同于变回INNER JOIN的效果,需要将日期筛选挪到JOIN的关联条件中。
  • 无匹配数据时需要用ISNULL/COALESCE函数处理字段,将NULL值替换为模板表的默认值0和指定查询日期。
修改后的代码
DECLARE @Date VARCHAR(100)=CONVERT(varchar,getdate(),110)

SELECT 
    base.PackingStation, 
    ISNULL(summary.PackDate, @Date) AS PackDate,
    base.[Shift],
    ISNULL(summary.Qty, base.Qty) AS Qty
FROM
    [MKE_PSS].[dbo].[BaseDipline] base
LEFT JOIN 
    [MKE_PSS].[dbo].[vwDipLinePackingActivity_Summary] summary
         ON base.PackingStation = summary.PackingStation
         AND base.[Shift] = summary.[Shift]
         AND summary.PackDate = @Date
ORDER BY
    base.PackingStation, base.[Shift]

这里给两张表加了别名简化写法,查询逻辑保留了模板表的全部行,有匹配的业务数据时取业务表的Qty值,无匹配时保留模板表默认的0值,同时所有行的日期统一为你设置的查询日期,输出顺序也对齐预期结果按产线+班次排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:18:02