簡體   English   中英

使用帶有 ORDER BY 的 SQL 服務器查找累積和

[英]Finding cumulative sum using SQL Server with ORDER BY

試圖計算一個給定數字的累積總和。 需要按 2 列訂購:交貨、日期。

詢問:

SELECT Date, Delivery, Balance, SUM(Balance) OVER ( ORDER BY Delivery, Date) AS cumsum
FROM t

結果:

Contract_Date   Delivery    Balance cumsum
2020-02-25  2020-03-01  308.100000  308.100000
2020-03-05  2020-03-01  -2.740000   305.360000
2020-03-06  2020-04-01  176.820000  682.180000
2020-03-06  2020-04-01  200.000000  682.180000
2020-03-09  2020-04-01  300.000000  1082.180000
2020-03-09  2020-04-01  100.000000  1082.180000
2020-03-13  2020-04-01  129.290000  1211.470000
2020-03-16  2020-04-01  200.000000  1711.470000
2020-03-16  2020-04-01  300.000000  1711.470000
2020-03-17  2020-04-01  300.000000  2011.470000
2020-04-01  2020-04-01  86.600000   2098.070000
2020-04-03  2020-04-01  200.000000  2298.070000

預期成績:

Contract_Date   Delivery    Balance cumsum
25/2/2020   1/3/2020    308.1   308.1
5/3/2020    1/3/2020    -2.74   305.36
6/3/2020    1/4/2020    176.82  482.18
6/3/2020    1/4/2020    200     682.18
9/3/2020    1/4/2020    300     982.18
9/3/2020    1/4/2020    100     1082.18
13/3/2020   1/4/2020    129.29  1211.47
16/3/2020   1/4/2020    200     1411.47
16/3/2020   1/4/2020    300     1711.47
17/3/2020   1/4/2020    300     2011.47
1/4/2020    1/4/2020    86.6    2098.07
3/4/2020    1/4/2020    200     2298.07

版本: Microsoft SQL Server 2017

您需要ORDER BY子句中的第三列來打破Contract_DateDelivery的關系。 您將使用哪一個並不明顯。 這是使用列Balance的一個選項:

SELECT 
    Date, 
    Delivery, 
    Balance, 
    SUM(Balance) OVER ( ORDER BY Delivery, Contract_Date, Balance) AS cumsum
FROM t

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM