Ich versuche, die Balance aus diesen DatenSQL Server - addieren oder subtrahieren von früheren Wert
Date Logged Closed
-------------- ----------- -----------
1-Jan-2016 0 0
2-Jan-2016 8 7
3-Jan-2016 8 8
4-Jan-2016 25 11
5-Jan-2016 20 16
6-Jan-2016 14 13
7-Jan-2016 10 12
8-Jan-2016 9 7
9-Jan-2016 12 12
10-Jan-2016 3 4
Die erwartete Ausgabe ist
Date Logged Closed Balance
-------------- ----------- ----------- ----------
1-Jan-2016 0 0 0
2-Jan-2016 8 7 1
3-Jan-2016 8 8 1
4-Jan-2016 25 11 15
5-Jan-2016 20 16 19
6-Jan-2016 14 13 20
7-Jan-2016 10 12 18
8-Jan-2016 9 7 20
9-Jan-2016 12 12 20
10-Jan-2016 3 4 27
Die Formel BALANCE ist zu erhalten = PREVIOUSBALANCE + LOGGED - GESCHLOSSEN.
Beispiel Formel:
Jan 5 Balance (15) = 1(prevBalance) + 25(currentLogged) - 11(currentClosed)
ich diese Formel versucht habe, aber nicht irgendwo in der Nähe zu dem gewünschten Ergebnis zu bekommen.
WITH CTE AS (
SELECT
rownum = ROW_NUMBER() OVER (ORDER BY Date),
Date, Logged, Closed
FROM Table
)
SELECT
(prev.Logged - prev.Closed)+ (a.Logged-a.Closed) as [Balance]
FROM CTE
LEFT JOIN CTE prev ON prev.rownum = CTE.rownum - 1
Andere Referenzen verwendet
SQL Server - Calculate current row value using previous row value
, welche Version von SQL-Server verwenden Sie? –
Derzeit mit 2012 Express. Aber ich hoffe, dass die Abfrage flexibel wäre, um auch an 2008 zu arbeiten. – Mitchi