我目前有这样的代码,我想根据年份总结每个数量。我写了一个代码,我认为它会在2016年和2017年总结所有费用,但它运行不正确。总和基于日期
我添加了两种不同类型的partition by
语句来测试,看看是否有效,他们不会。当我把它们拿出来时,“年鉴”专栏只给我显示特定收据的数量。
这里是我当前的代码:
SELECT
ReceiptNumber
,Quantity
,Date
,sum(CASE WHEN (Date >= '2016-01-01' and Date < '2017-01-01') THEN
Quantity
ELSE 0 END)
OVER (PARTITION BY Date)
as Annual2016
,sum(CASE WHEN (Date >= '2017-01-01' and Date < '2018-01-01') THEN
Quantity
ELSE 0 END)
OVER (PARTITION BY ReceiptNumber)
as Annual2017
FROM Table1
GROUP BY ReceiptNumber, Quantity, Date
我想我的数据看起来像这样
ReceiptNumber Quantity Date Annual2016 Annual2017
1 5 2016-01-05 17 13
2 11 2017-04-03 17 13
3 12 2016-11-11 17 13
4 2 2017-09-09 17 13
下面是一些数据的样本,我从拉:
ReceiptNumber Quantity Date
1 5 2016-01-05
2 11 2017-04-03
3 12 2016-11-11
4 2 2017-09-09
5 96 2015-07-08
6 15 2016-12-12
7 24 2016-04-19
8 31 2017-01-02
9 10 2017-0404
10 18 2015-10-10
11 56 2017-06-02
你可以添加一些数据样本? – Horaciux
使用临时表或VALUES作为测试数据 –
删除'PARTITION BY'。即'OVER()',您已经过滤了CASE中的年份) – dnoeth