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

如何基于昨日数据在SQL中补全缺失的库存记录?

解决方案

核心思路

通过全量产品清单(或昨日全量库存数据)左连接今日上报的变动数据,用COALESCE函数优先取今日上报的库存值,无上报数据则沿用昨日库存,最后统一日期为今日。


情况1:已有独立的全量产品目录表

假设产品目录表名为product_catalog,历史库存表为inventory_history,今日上报的临时表为today_report,执行以下SQL:

SELECT 
    p.Product,
    COALESCE(tr.Inventory, ih.Inventory) AS Inventory,
    '2022-12-08' AS Date
FROM product_catalog p
-- 关联今日上报的变动数据
LEFT JOIN today_report tr ON p.Product = tr.Product
-- 关联昨日的全量库存数据
LEFT JOIN (
    SELECT Product, Inventory 
    FROM inventory_history 
    WHERE Date = '2022-12-07'
) ih ON p.Product = ih.Product;

情况2:无独立产品目录,用昨日库存表获取全量产品

如果没有单独的产品目录,直接从昨日的库存表中提取所有产品:

SELECT 
    ih_yesterday.Product,
    COALESCE(tr.Inventory, ih_yesterday.Inventory) AS Inventory,
    '2022-12-08' AS Date
FROM (
    -- 取昨日全量库存数据
    SELECT Product, Inventory 
    FROM inventory_history 
    WHERE Date = '2022-12-07'
) ih_yesterday
-- 关联今日上报的变动数据
LEFT JOIN today_report tr ON ih_yesterday.Product = tr.Product;

逻辑说明

  • COALESCE(a, b):如果a(今日上报的库存)不为空则取a,否则取b(昨日库存)
  • 左连接确保所有产品都会被保留,不会因为今日无上报而丢失
  • 手动指定Date为今日,统一输出日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:25:15