SQL 适用于 Microsoft SQL Server 2014。
计算前原始查询结果表如下。它按 Item 和 OrderDate 排序。库存数量是当前可用数量。每个项目的记录都是相同的。将按照先序先服务的规则依次完成订单。需要计算 BalanceQty,即满足该记录后的可用数量。
原始查询记录:
Item OrderDate OrderQty InventoryQty
Item1 2016/11/01 3 10
Item1 2016/11/03 4 10
Item1 2016/11/09 2 10
Item1 2016/11/10 1 10
Item1 2016/11/11 5 10
Item1 2016/11/15 6 10
Item1 2016/11/20 3 10
Item2 2016/11/11 7 15
Item2 2016/11/13 4 15
Item2 2016/11/19 5 15
Item2 2016/11/20 6 15
Run Code Online (Sandbox Code Playgroud)
BalanceQty 的预期查询结果。
Item OrderDate OrderQty InventoryQty BalanceQty
Item1 2016/11/01 3 10 7
Item1 2016/11/03 4 10 3
Item1 2016/11/09 2 10 1
Item1 2016/11/10 1 10 0
Item1 2016/11/11 5 10 -5
Item1 2016/11/15 6 10 -11
Item1 2016/11/20 3 10 -14
Item2 2016/11/11 7 15 8
Item2 2016/11/13 4 15 4
Item2 2016/11/19 5 15 -1
Item2 2016/11/20 6 15 -7
Run Code Online (Sandbox Code Playgroud)
您正在寻找累计金额。在 SQL Server 2012+ 中,您将执行以下操作:
select t.*,
(InventoryQty - sum(OrderQty) over (partition by item order by OrderDate)) as BalanceQty
from t;
Run Code Online (Sandbox Code Playgroud)
SQL Server 2013(如果存在的话)大概会在 2012 年之后出现并具有此功能;)我认为这是一个拼写错误。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |