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

在SQL中实现FIFO库存计价:基于库存与销售表的计算需求

FIFO计价逻辑实现方案

针对你的库存表和销售表,要实现FIFO的成本计算及剩余库存统计,可以用窗口函数结合条件判断来完成,以下是具体的SQL实现步骤:

1. 计算库存批次的累计可用量

先对同一商品的库存按采购日期排序,计算每个批次的累计库存,明确销售时优先消耗的批次顺序:

WITH stock_with_running_total AS (
    SELECT 
        ID,
        Qty AS original_qty,
        DatePurchased,
        Price,
        SUM(Qty) OVER (PARTITION BY ID ORDER BY DatePurchased) AS running_total
    FROM stock_table
)

2. 关联销售表,计算各批次的耗用数量、剩余库存及批次成本

将临时表与销售表关联,通过累计库存和销售数量的对比,判断每个批次被消耗的数量,进而算出剩余库存和该批次的成本:

, fifo_calculation AS (
    SELECT 
        s.ID,
        s.DatePurchased,
        s.original_qty,
        s.Price,
        -- 计算该批次被耗用的数量
        CASE
            WHEN s.running_total <= i.Qty THEN s.original_qty
            WHEN s.running_total - s.original_qty >= i.Qty THEN 0
            ELSE i.Qty - (s.running_total - s.original_qty)
        END AS used_qty,
        -- 剩余库存 = 原库存 - 耗用数量
        s.original_qty - CASE
            WHEN s.running_total <= i.Qty THEN s.original_qty
            WHEN s.running_total - s.original_qty >= i.Qty THEN 0
            ELSE i.Qty - (s.running_total - s.original_qty)
        END AS remaining_qty,
        -- 该批次的成本 = 耗用数量 * 单价
        CASE
            WHEN s.running_total <= i.Qty THEN s.original_qty * s.Price
            WHEN s.running_total - s.original_qty >= i.Qty THEN 0
            ELSE (i.Qty - (s.running_total - s.original_qty)) * s.Price
        END AS batch_cost
    FROM stock_with_running_total s
    JOIN item_sold_table i ON s.ID = i.ID
    WHERE s.ID = 11202
)

3. 查看明细及汇总总成本

执行以下语句可查看各批次的耗用、剩余情况,以及销售的总成本:

-- 查看各批次明细
SELECT * FROM fifo_calculation;

-- 汇总销售总成本
SELECT ID, SUM(batch_cost) AS total_cost FROM fifo_calculation GROUP BY ID;

用你的数据测试会得到预期结果:

  • 2023-01-01批次:used_qty=4,remaining_qty=0,batch_cost=12
  • 2023-06-12批次:used_qty=2,remaining_qty=1,batch_cost=14
  • 2023-12-10批次:used_qty=0,remaining_qty=4,batch_cost=0
    汇总总成本为26,完全符合FIFO计价逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:35