Jak obliczyć łączną liczbę transakcji w sql w odwrotnej kolejności

0

Pytanie

wprowadź opis zdjęcia tutaj

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

Próbowałem to zrobić, aby zmienić obecny stan, przechodząc od ostatnich wpisów do starych. Jak mogę obrócić to odwrócić, aby wrócić, aby zapewnić równowagę w innym kierunku?

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

Najlepsza odpowiedź

2

Jeśli twój ID jest unikalny dla każdego wiersza, a następnie usuń PARTITION BY ID inaczej to nie będzie się kumulować cumulatively. Aby zmienić kolejność bieżącego suma, wystarczy zmienić kolejność 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

Wyniki:

ID Data Kwota Uruchamiamy równowagi do przodu Kolejny bilans temu
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

oprócz bieżącego wyniku użyj numer_wiersza do tworzenia kolumny sortowania i rozdzielania go na identyfikatora w kolejności według daty, aby utworzyć identyfikator wiersza, a następnie rozmieść według identyfikatora wiersza

2021-11-23 21:11:41
0

Tylko po to, aby pokazać przykład tego, do czego używa się klucza.

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
Sklep | Data | Kwota | Podsumowanie realizacji | Tył
podsumowanie :---- | :--------- | -----: | -----------: | ------------------:
A| 2020-01-01 | 1 | 1 | 3
A| 2020-01-03 | 1 | 2 | 2
A| 2020-01-05 | 1 | 3 | 1
W| 2020-01-02 | 10 | 10 | 30
W| 2020-01-04 | 10 | 20 | 20
W| 2020-01-06 | 10 | 30 | 10
2021-11-23 21:06:26

W innych językach

Ta strona jest w innych językach

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