Se o seu ID
é exclusivo para cada linha, em seguida, remover o PARTITION BY ID
outra coisa que não soma cumulativamente. Para inverter a ordem de execução total, basta inverter a ORDER BY
do SUM
:
DDL:
declare @sales table (
ID int,
Date date,
Amount int);
insert into @sales
values
(1, '2020-01-01', 15),
(2, '2020-01-02', 10),
(3, '2020-01-03', 5);
DML:
select ID, Date, Amount,
sum(Amount) over (order by Date) as RunningBalanceForward,
sum(Amount) over (order by Date desc) as RunningBalanceBackwards
from @sales
order by ID
Resultados:
ID |
Data |
Quantidade |
RunningBalanceForward |
RunningBalanceBackwards |
1 |
2020-01-01 |
15 |
15 |
30 |
2 |
2020-01-02 |
10 |
25 |
15 |
3 |
2020-01-03 |
5 |
30 |
5 |