【问题标题】:running sum based on 2 column names基于 2 个列名的运行总和
【发布时间】:2017-05-01 20:37:47
【问题描述】:

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

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,对于 4/22,鞋子将是 (72+(-65)) = 7,然后是 7 + (1+(-2))=6。凉鞋也是如此,TX 也是如此。

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: sql sql-server cumulative-sum


    【解决方案1】:

    您可以使用累积和窗口函数来做到这一点:

    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 -- 以及月份。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        • 2020-04-07
        • 2014-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多