Ako vypočítať beží celkom v sql dozadu

0

Otázka

zadajte popis obrázku tu

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

Snažil som sa na to zvrátiť beh zostatok bude od najnovších až po staršie záznamy. Ako môžem zmeniť tento ísť dozadu, aby mi beží rovnováhu iným spôsobom?

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

Najlepšiu odpoveď

2

Ak je váš ID je jedinečné pre každý riadok, a potom odstráňte PARTITION BY ID inak to nebude súčet kumulatívne. Ak chcete obrátiť poradie beží celkom jednoducho zvrátiť ORDER BY z 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

Výsledky:

ID Dátum Množstvo 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

okrem beží spolu, použite row_number vytvoriť zoradiť stĺpec a oblasť je identifikácia objednávky: dátum desc generovanie rowid potom poriadku rowid

2021-11-23 21:11:41
0

Len ukázať príklad toho, čo oblasť sa používa pre.

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
Store | Dátumu | Výška | RunningTotal | ReverseRunningTotal
:---- | :--------- | -----: | -----------: | ------------------:
A| 2020-01-01 | 1 | 1 | 3
A| 2020-01-03 | 1 | 2 | 2
A| 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

V iných jazykoch

Táto stránka je v iných jazykoch

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