我正在尝试按客户划分连续12个月的销售总额。以下是我的示例数据:
CREATE TABLE #Test
(
[CustomerID] NVARCHAR(2),
[SalesDate] DATE,
[SalesQty] INT
)
INSERT INTO #Test VALUES
('A1','9/17/2016',21),
('A1','3/9/2018',14),
('B1','4/2/2017',11),
('B1','6/13/2017',48),
('C1','8/6/2017',28),
('C1','10/29/2017',41),
('C1','11/17/2017',48),
('C1','6/1/2018',31),
('D1','7/19/2016',32),
('D1','2/14/2017',43),
('D1','5/24/2018',38),
('E1','12/20/2016',17),
('E1','1/4/2017',42),
('E1','8/29/2017',31),
('E1','10/12/2017',29),
('E1','10/24/2017',12),
('E1','11/30/2017',40),
('E1','1/9/2018',41),
('E1','1/29/2018',25),
('E1','3/22/2018',15),
('E1','4/24/2018',22),
('E1','4/25/2018',37),
('E1','5/18/2018',40),
('E1','6/12/2018',32)
我想在此数据中添加一列,以向我显示每个客户12个月的累计销售量。
这是我在Excel中使用sumifs的预期输出:
CustomerID SalesDate SalesQty Rolling 12 Months Cumulative Sales
A1 9/17/2016 21 21
A1 3/9/2018 14 14
B1 4/2/2017 11 11
B1 6/13/2017 48 59
C1 8/6/2017 28 28
C1 10/29/2017 41 69
C1 11/17/2017 48 117
C1 6/1/2018 31 148
D1 7/19/2016 32 32
D1 2/14/2017 43 75
D1 5/24/2018 38 38
E1 12/20/2016 17 17
E1 1/4/2017 42 59
E1 8/29/2017 31 90
E1 10/12/2017 29 119
E1 10/24/2017 12 131
E1 11/30/2017 40 171
E1 1/9/2018 41 153
E1 1/29/2018 25 178
E1 3/22/2018 15 193
E1 4/24/2018 22 215
E1 4/25/2018 37 252
E1 5/18/2018 40 292
E1 6/12/2018 32 324
客户A1有2个销售交易,但彼此之间的间隔时间超过12个月,因此滚动12个月的累积销售量 每个交易的日期与每个日期的SalesQty列完全相同。客户C1在12个月的滚动期内全部有4个交易,因此“滚动12个月的累积销售”列继续添加SalesQty,等等。请注意,客户D1的第三笔交易的“滚动12个月的累积销售”如何从75下降到38是2017年5月24日至2018年5月24日之间的12个月内唯一的销售。
我对如何在SQL中执行此操作感到困惑。我试图使用窗口函数,但无法弄清楚如何根据当前行的销售日期将分区限制为CustomerID和前12个月。