[英]SQL Query Recalculating Running Totals
我正在接受一組交易和金額,我想創建一個新的金額列,具有以下邏輯 -
這是我正在尋找的一個例子——
Item Record Old amount New Amount Running Total
1 1 100 100 100
1 2 -100 -100 0
1 3 -200 0 0
1 4 500 500 500
1 5 -300 -300 200
1 6 300 300 500
我的跑步總數從零開始。
我的第一個金額是 100,並且總金額不小於 0,因此我將其傳遞並將新金額設置為 100。
我的第二個金額是 -100,這不會使我的運行總數 100 小於 0,因此我將新金額設置為 -100。
我的第三個金額是-200。 這將使 0 到 -200,< 0 的運行總數。因此,我將新數量設置為 0。
我的第四筆金額是 500。它通過了。
我的第五個金額是-300。 這將需要 500 到 200 的運行總數,仍然 >= 0。它通過了。
我的第六筆金額是 300。它通過了,我的最終金額總計為 500。
困難的部分是像這里的記錄五這樣的情況。 為了知道最終運行總計不會低於零,您需要已經計算了記錄 3 的新總計。
我認為您可以通過設置公用表表達式以進行遞歸查詢來做到這一點,但我已經不知道如何准確地創建它。 如果可能的話,我想避免使用游標。
這是一個帶有包裝CASE
語句的WINDOW FUNCTION
解決方案。
查找LAG
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.