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

SQL实现筛选:排除指定时间段内当前库存持续为0的记录

SQL实现排除持续零库存记录的筛选逻辑

需求说明

需要在SQL中实现筛选逻辑,排除指定时间段内当前库存(Current Stock)持续为0的记录。举个例子:如果某商品从2023年1月8日开始,所有日期的库存都为0,那么要把2023年1月8日及之后的相关记录全部剔除。

实现思路

  • 先定位每个商品最后一次库存不为0的日期
  • 筛选出所有日期早于或等于该日期的记录;如果某商品从未有过非零库存,可根据需求选择直接排除或保留

示例SQL代码

假设你的库存表名为inventory,包含字段:product_id(商品ID)、record_date(记录日期)、current_stock(当前库存),代码如下:

WITH last_non_zero_stock AS (
    SELECT
        product_id,
        MAX(record_date) AS last_non_zero_date
    FROM
        inventory
    WHERE
        current_stock > 0
    GROUP BY
        product_id
)
SELECT
    i.*
FROM
    inventory i
LEFT JOIN
    last_non_zero_stock lnzs ON i.product_id = lnzs.product_id
WHERE
    -- 有过非零库存的商品,保留最后一次非零库存日期及之前的记录
    (lnzs.last_non_zero_date IS NOT NULL AND i.record_date <= lnzs.last_non_zero_date)
    -- 若需保留从未有过非零库存的商品记录,可取消下面的注释并调整条件
    -- OR lnzs.last_non_zero_date IS NULL

代码解释

  • CTE last_non_zero_stock 用于计算每个商品最后一次库存大于0的日期,这是判断是否进入持续零库存阶段的临界点
  • 通过左关联将原表数据与CTE结果关联,筛选时只保留未超过临界点的记录
  • 注释部分可根据业务需求调整,比如是否保留从未有过非零库存的商品数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:44:58