我正在使用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,鞋子将是(72 +( - 65))= 7为4/22然后7 +(1 +( - 2))= 6。凉鞋也是如此,也适用于TX。
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
使用累积和窗函数执行此操作:
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
- 以及月份。
答案 1 :(得分:0)
还没有足够的回复评论,但有一点需要指出的是,要使用窗口函数获取运行总计,请在PARTITION中使用ORDER BY。这仅适用于2012 +。我知道你说你使用的是2014年,但如果你不知道ORDER BY在PARTITION中如何运作,你就不会真正理解之前的答案。