Cómo calcular el total de ejecución en sql hacia atrás

0

Pregunta

introduzca la descripción de la imagen aquí

select id,date,amount,SUM (Amount)  OVER (PARTITION BY ID ORDER BY DATE desc)  AS runningbalance from sales

He intentado hacer esto para revertir el balance corriente que va desde los más recientes a los más antiguos registros. ¿Cómo puedo revertir esta para ir hacia atrás para darme cuenta de la otra manera?

sql tsql
2021-11-23 20:51:45
3

Mejor respuesta

2

Si su ID es único para cada fila, a continuación, quitar la PARTITION BY ID otra cosa que no suma acumulativa. Para invertir el orden de la ejecución total basta con invertir la ORDER BY de la 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 Fecha Cantidad RunningBalanceForward RunningBalanceBackwards
1 2020-01-01 15 15 30
2 2020-01-02 10 25 15
3 2020-01-03 5 30 5
2021-11-23 21:16:46
0

además el total de ejecución, el uso de un row_number para crear el tipo de columna y la partición por id order by fecha desc, generando un rowid, a continuación, el fin por el rowid

2021-11-23 21:11:41
0

Sólo para mostrar un ejemplo de lo que la partición es utilizada para.

declare @Sales table (
  ID int identity(1,1) primary key,
  [Date] date,
  Store varchar(30),
  Amount int
  
);

insert into @Sales ([Date], Store, Amount)
values
  ('2020-01-01','A',1), ('2020-01-03','A',1)
, ('2020-01-05','A',1)
, ('2020-01-02','B',10), ('2020-01-04','B',10)
, ('2020-01-06','B',10)
;
    
select Store, [Date], Amount, 
    sum(Amount) over (partition by Store order by [Date] ASC) as RunningTotal, 
    sum(Amount) over (partition by Store order by [Date] DESC) as ReverseRunningTotal
from @Sales
order by Store, [Date] 
GO
Almacén | Fecha | Cantidad | Totalactualizado | ReverseRunningTotal
:---- | :--------- | -----: | -----------: | ------------------:
Un| 2020-01-01 | 1 | 1 | 3
Un| 2020-01-03 | 1 | 2 | 2
Un| 2020-01-05 | 1 | 3 | 1
B| 2020-01-02 | 10 | 10 | 30
B| 2020-01-04 | 10 | 20 | 20
B| 2020-01-06 | 10 | 30 | 10
2021-11-23 21:06:26

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................