Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于以前的记录在新字段上计算_Sql_Sql Server - Fatal编程技术网

Sql 基于以前的记录在新字段上计算

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/

SQL适用于Microsoft SQL Server 2014

计算表之前的原始查询结果如下。它按项目和订单日期排序。InventoryQty是当前可用数量。每个项目的记录上都是相同的。将根据一阶先发球规则依次完成订单。需要计算余额Qty,该余额Qty是完成该记录后的可用数量

原始查询记录:

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年之后出现,并具有此功能;)我想这是打字错误。

谢谢。这是打字错误,已经更新了。谢谢。这是打字错误,并且已经更新。