我编写了以下分区查询,以显示多年来的客户订单滚动金额,但是却获得了重复的记录,并且不确定在这里我做错了什么。
SELECT
sc.Cust_no,
YEAR(sc.invoice_date),
SUM([SQFT])
OVER (PARTITION BY sc.Cust_no, YEAR(sc.invoice_date)
ORDER BY YEAR(sc.invoice_date)
) as Rolling_Sum
FROM ns.SAR_Combined sc
GROUP BY
Cust_no,
sqft,
YEAR(sc.invoice_date)
输出是什么样子
Cust_no Year Sqft
0001 2015 10806.15
0001 2015 10806.15
0001 2015 10806.15
0001 2015 10806.15
0002 2013 26520
0002 2013 26520
0002 2013 26520
0002 2013 26520
0002 2013 26520
任何帮助将不胜感激
答案 0 :(得分:1)
我猜想您想要累积的总和。如果是这样,则需要在聚合上使用窗口函数:
Select sc.Cust_no, year(sc.invoice_date),
sum(Sum([SQFT])) over (partition by sc.Cust_no, year(sc.invoice_date)
order by year(sc.invoice_date)
) as Rolling_Sum
from ns.SAR_Combined sc
group by Cust_no, year(sc.invoice_date);
您获得“重复”的原因是由于sqft
子句中的group by
。但是,仅删除它并不能解决您的问题-还需要更改Rolling_Sum
的计算。