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

如何编写SQL脚本按指定累计值筛选库存估值数据?

基于收货日期的库存估值SQL实现方案

我明白你要解决的是月末库存估值的问题——取最后收货货物的指定总和来计算剩余库存价值。咱们一步步来拆解解决方案:

现有基础查询

你已经有了简化后的联合查询语句:

SELECT DATE, W1 FROM Table ORDER BY DATE DESC

返回的结果如下:

行号DATEW1
12019-02-28 00:00:0013250
22019-02-28 00:00:0042610
32019-02-28 00:00:0041170
42019-02-28 00:00:0013180
52019-02-28 00:00:0020860
62019-02-28 00:00:0019870
72019-02-28 00:00:0037780
82019-02-28 00:00:0047210
92019-02-28 00:00:0032000
102019-02-28 00:00:0041930

累计和思路的进展

你已经想到用累计和来推进,计算后的结果如下:

行号DATEW1累计和
12019-02-28 00:00:001325013250
22019-02-28 00:00:004261055860
32019-02-28 00:00:004117097030
42019-02-28 00:00:0013180110210
52019-02-28 00:00:0020860131070
62019-02-28 00:00:0019870150940
72019-02-28 00:00:0037780188720
82019-02-28 00:00:0047210235930
92019-02-28 00:00:0032000267930
102019-02-28 00:00:0041930309860

参数化筛选的解决方案

要实现指定目标值(比如120000)时,返回累计和恰好达到该值的行(最后一行取部分W1),可以用CTE结合窗口函数来实现。这里用ROW_NUMBER()保证排序稳定性(因为你的DATE都是同一天,需要行号固定顺序):

-- 定义目标参数,可替换为任意需要的值
DECLARE @TargetSum INT = 120000;

WITH InventoryWithRunningTotal AS (
    SELECT 
        ROW_NUMBER() OVER (ORDER BY DATE DESC) AS 行号,
        DATE,
        W1,
        SUM(W1) OVER (ORDER BY DATE DESC, ROW_NUMBER() OVER (ORDER BY DATE DESC)) AS 累计和
    FROM Table
)
SELECT 
    行号,
    DATE,
    W1,
    累计和,
    -- 判断当前行取全部W1还是剩余部分
    CASE 
        WHEN 累计和 <= @TargetSum THEN W1
        ELSE @TargetSum - (累计和 - W1)
    END AS W1_Select
FROM InventoryWithRunningTotal
-- 筛选出需要包含的行:累计和减去当前W1后仍小于目标值
WHERE (累计和 - W1) < @TargetSum;

逻辑说明

  1. 用ROW_NUMBER()生成稳定行号,确保同一天的记录排序固定;
  2. 用SUM() OVER()窗口函数按收货日期倒序(最新收货在前)计算累计和;
  3. 通过CASE语句分支处理:若当前累计和未超目标值,取全部W1;若超过,取目标值与前一行累计和的差值(即需要的剩余部分);
  4. WHERE条件确保只保留前几行全部数据,加上最后一行(其累计和超目标值,但前一行未超)。

当目标值设为120000时,执行结果会和你期望的一致:

行号DATEW1累计和W1_Select
12019-02-28 00:00:00132501325013250
22019-02-28 00:00:00426105586042610
32019-02-28 00:00:00411709703041170
42019-02-28 00:00:001318011021013180
52019-02-28 00:00:00208601310709790

这样就能精准得到你需要的指定总和的库存估值数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:36:01