我有两张桌子:股票和订单:
股票:
*id | name | stockcount
----------------------------
1 | item1 | 10
2 | item2 | 9
Run Code Online (Sandbox Code Playgroud)
Orderrow:
id | date | itemid | ordercount
------------------------------------------
1001 | 1/1/2016 | 1 | 5
1002 | 1/1/2016 | 2 | 8
1003 | 1/1/2016 | 2 | 1
1004 | 1/1/2016 | 1 | 3
1005 | 1/1/2016 | 1 | 5
Run Code Online (Sandbox Code Playgroud)
我想有以下观点:
qry_orderrow:
id | date | itemid | ordercount | stockleft
------------------------------------------------------
1001 | 1/1/2016 | 1 | 5 | 5
1002 | 1/1/2016 | 2 | 8 | 1
1003 | 1/1/2016 | 2 | 1 | 0
1004 | 1/1/2016 | 1 | 3 | 2
1005 | 1/1/2016 | 1 | 5 | -3
Run Code Online (Sandbox Code Playgroud)
如你所见,我添加了一个列'stockleft'.我想在减去订单的项目数后计算剩下的库存.
有谁知道如何使用SQL Server创建此查询?我真的不知道该怎么做,所以任何帮助都将不胜感激!
您需要累计订购金额,然后从初始金额中减去该金额.这是一个join花哨的窗口功能:
select o.*,
(s.stockcount -
sum(o.ordercount) over (partition by itemid order by date)
) as stockleft
from orderrow o join
stock s
on o.itemid = s.itemid;
Run Code Online (Sandbox Code Playgroud)
SQL Server 2012+支持累积总和.在早期版本中,您可以apply使用相关子查询或相关子查询执行类似操作.