我要帶一套交易和金額的,我想創建一個新的量柱,用下面的邏輯 -SQL查詢重新計算運行總計
- 檢查的運行總計(新)金額迄今。
- 如果將此金額添加到先前的總金額會使總金額小於零,則新金額字段應爲零。否則,它應該等於舊的金額。
這裏是我要找的一個例子 -
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的新總數。
我認爲您可以通過設置公用表表達式來實現此目的一個遞歸查詢,但我已經弄清楚如何創建它。如果可能的話,我想避免遊標。
沒有看到你如何做計算,很難確定。爲什麼不能使用MAX((runningtotal - amount),0)'? – user2338816