2016-12-12 6 views
1

SQLはMicrosoft SQL Server 2014用です。新しいフィールドで計算する前のレコードのベース

計算前の元の照会結果の表は次のとおりです。 ItemとOrderDateでソートされます。 InventoryQtyは現在使用可能な数量です。各商品のレコードでも同じです。順番に順序を守るために一番先のルールに基づいています。そのレコードが満たされた後に利用可能な数量であるBalanceQtyを計算する必要があります。

オリジナルクエリレコード: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  

期待クエリの結果。

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 
+1

ありがとうございます。これはタイプミスで、更新されました。 – YellowLarry

答えて

4

累積合計を探しています。 SQL Serverの2012+では、あなたはどうなる:

select t.*, 
     (InventoryQty - sum(OrderQty) over (partition by item order by OrderDate)) as BalanceQty 
from t; 

のSQL Server 2013でしょう - それが存在する場合 - おそらく2012年後に来ると、この機能を持っている;)私はタイプミスであると仮定します。

+0

ありがとうございます。それは完全に動作します。 – YellowLarry

関連する問題