Meine Tabelle wird wie folgtkumulative Summe Monat, wenn angegeben Tage
T1 (date int, dateYearMonth int, userID int, shopID int, amount numeric(18,2))
Beispieldaten:
(20151212, 201512, 1, 1, 50.00),
(20151213, 201512, 1, 1, 30.00),
(20160110, 201601, 1, 1, 13.00)
I kumulativen Summen eines jeden Monats für Benutzer zurückkehren möchten, meine Frage ist:
select t.dateYearMonth, t.userID,
sum(t.sum_amount) over
(partition by t.userID order by t.dateYearMonth
rows between unbounded preceding and current row)
from (select dateYearMonth, userID, sum(amount) as sum_amount FROM T1
group by dateYearMonth, userID) t
Gibt es einen optimalen Weg dies zu tun? Ausgang erwartet
(201512, 1, 1, 80.00), (201601, 1, 1, 93.00)
Warum '93.00' für' 201601'? –
Dies ist kumulative Summe - es steigt über die Monate (vorheriger Wert + aktueller Wert) –
Versuchen Sie rekursive CTE und vergleichen Sie die Leistung mit Ihrem Ansatz. Recursive Cte sollte auch mit einer früheren Version von SQL Server funktionieren. –