Eventuali duplicati:
How do I calculate a running total in SQL without using a cursor?Ottieni la somma di tutti i valori precedenti? - Totale finora?
E 'un po' difficile da spiegare, così ti faccio vedere quello che voglio con un esempio:
Consente di dire che abbiamo la seguente tabella MonthProfit
:
[MonthId][Profit]
1, 10 -- January
2, 20 -- February
3, 30
4, 40
5, 50
6, 60
7, 70
8, 80
9, 90
10, 100
11, 110
12, 120 -- December
La colonna profit
rappresenta l'utile per quel mese.
Tuttavia, se abbiamo 10 di profitto nel mese di gennaio, e il 20 Febbraio, nel mese di febbraio abbiamo un profitto totale di 30.
quindi mi piacerebbe creare una vista che mostra la seguente:
[MonthId][Profit][ProfitTotal]
1, 10, 10 -- January
2, 20, 30 -- February
3, 30, 60
4, 40, 100
5, 50, 150
6, 60, 210
7, 70, 280
8, 80, 360
9, 90, 450
10, 100, 550
11, 110, 660
12, 120, 780 -- December
Quello che ho fatto oggi per risolverlo, è una vista simile a questo:
SELECT [MonthId]
,[Profit]
, (SELECT SUM([Profit])
FROM MonthProfit
WHERE [MonthId] <= outer.[MonthId]) as ProfitTotal
FROM MonthProfit as outer
Tuttavia, presumo che ciò è piuttosto lento perché deve raccontare tutto ogni volta, e non sembra ve ry elegante per me. C'è un "buon" modo per farlo?
anche http://stackoverflow.com/questions/814054/complicated-sql-query-for-a-running-total-column – JNK
Basta cercare "Running SQL totale" e si otterrà molti successi su questo. – JNK