运行 基于 2 列名称的总和

running sum based on 2 column names

我正在使用 SQL Server 2014,我需要进行 运行 求和计算。我有以下 table:

Date    State   Product    Total Sold or Returns    Transaction
22-Apr  FL       shoes            72                    Sale
22-Apr  FL      sandals            3                    Sale
22-Apr  TX       shoes             12                   Sale
22-Apr  TX       sandals           5                    Sale
23-Apr  FL      shoes              1                    Sale
23-Apr  FL      sandals            48                   Sale
23-Apr  TX      shoes               5                   Sale
23-Apr  TX      sandals            23                   Sale
22-Apr  FL      shoes              -65                  Returns
22-Apr  FL     sandals              -4                 Returns
22-Apr  TX      shoes              -25                 Returns
22-Apr  TX     sandals             -8                  Returns
23-Apr  FL     shoes              -2                   Returns
23-Apr  FL     sandals            -51                  Returns
23-Apr  TX     shoes               -5                   Returns
23-Apr  TX     sandals             -3                   Returns

我正在尝试计算每个州每个产品的 运行 月累计。例如,对于 FL,鞋子将为 (72+(-65)) = 7 for 4/22 然后 7 + (1+(-2))=6。凉鞋也一样,TX也是。

完成此任务的最佳方法是什么?

您可以使用累加和 window 函数执行此操作:

select t.*,
       sum(total_sold_or_returns) over (partition by state, product, year(date), month(date)
                                        order by date) as cumulative_sum
from t;

partition by 占用 stateproduct -- 以及月份。

还没有足够的代表发表评论,但是,要指出的一件事是,要使用窗口函数获得 运行 总数,您可以在 PARTITION 中使用 ORDER BY。这仅适用于 2012 +。我知道您说您使用的是 2014,但是如果您不知道 ORDER BY 在 PARTITION 中的工作原理,您将不会真正理解之前的答案。