을 계산하는 방법에서 실행중인 총에 sql 뒤로

0

질문

입력한 이미지는 여기에 설명

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

내가 노력이를 반대로 실행하 밸런스에서 가장 최근의 이전 레코드입니다. 나는 어떻게 반전이 뒤로 이동하게 실행하의 균형을 다른 방법이 있을까?

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

최고의 응답

2

하는 경우 ID 이 독특한 각 행은 다음 제거 PARTITION BY ID 그렇지 않을 것 합 cumulatively. 을 반대의 순서를 실행하는 총 단순히 반전 ORDER BYSUM:

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

결과:

ID 날짜 금액 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

외에도 총 실행,사용하는 그룹을 만들어 열 정렬하고 파티션에 의해 그것 id 날짜 순서 desc 생성 rowid 다음 순서에 의해 rowid

2021-11-23 21:11:41
0

을 보여주는 예의 파티션이 사용됩니다.

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
점|날짜|금액|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

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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