Sql 基于以前的记录在新字段上计算
SQL适用于Microsoft SQL Server 2014 计算表之前的原始查询结果如下。它按项目和订单日期排序。InventoryQty是当前可用数量。每个项目的记录上都是相同的。将根据一阶先发球规则依次完成订单。需要计算余额Qty,该余额Qty是完成该记录后的可用数量 原始查询记录:Sql 基于以前的记录在新字段上计算,sql,sql-server,Sql,Sql Server,SQL适用于Microsoft SQL Server 2014 计算表之前的原始查询结果如下。它按项目和订单日期排序。InventoryQty是当前可用数量。每个项目的记录上都是相同的。将根据一阶先发球规则依次完成订单。需要计算余额Qty,该余额Qty是完成该记录后的可用数量 原始查询记录: Item OrderDate OrderQty InventoryQty Item1 2016/11/01 3 10 Item1 2016/
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
预期查询结果为余额数量
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
您正在寻找累计金额。在SQL Server 2012+中,您将执行以下操作:
select t.*,
(InventoryQty - sum(OrderQty) over (partition by item order by OrderDate)) as BalanceQty
from t;
SQL Server 2013(如果存在的话)可能会在2012年之后出现,并具有此功能;)我认为这是一个输入错误。您正在查找累计金额。在SQL Server 2012+中,您将执行以下操作:
select t.*,
(InventoryQty - sum(OrderQty) over (partition by item order by OrderDate)) as BalanceQty
from t;
SQL Server 2013(如果存在的话)可能会在2012年之后出现,并具有此功能;)我想这是打字错误。谢谢。这是打字错误,已经更新了。谢谢。这是打字错误,并且已经更新。