Duplicar posible:
How do I calculate a running total in SQL without using a cursor?¿Obtiene la suma de todos los valores anteriores? - Total hasta ahora?
Es un poco difícil de explicar, así que voy a mostrar lo que quiera con un ejemplo:
digamos que tenemos el siguiente cuadro llamado 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 columna profit
representa el beneficio de ese mes.
Sin embargo, si tenemos 10 ganancias en enero y 20 de febrero, en febrero tenemos un beneficio total de 30.
por lo que me gustaría crear una vista que muestra lo siguiente:
[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
lo que hice ahora para resolverlo, es una vista como esta:
SELECT [MonthId]
,[Profit]
, (SELECT SUM([Profit])
FROM MonthProfit
WHERE [MonthId] <= outer.[MonthId]) as ProfitTotal
FROM MonthProfit as outer
sin embargo, supongo que esto es bastante lento, ya que tiene que contar todo, todo el tiempo, y no parece cinco Elegante para mí. ¿Existe una forma correcta de hacer esto?
también http://stackoverflow.com/questions/814054/complicated-sql-query-for-a-running-total-column – JNK
Sólo la búsqueda de "Ejecución de SQL total" y obtendrá muchos éxitos en esto. – JNK