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