我有一个表,其中包含按日期划分的大约300万行客户销售额。
对于每个CustomerID行,我需要获取Espend_Value,其中Order_Date介于Order_Date_m365和Order_Date之间的总和
Order_Date_m365=订单日期减去365天。
我刚刚尝试了自联接,但当然,由于行与日期重叠,这导致了错误的结果。
如果有一个窗口函数的方法,这将是理想的,但我尝试了,但不能在函数中的日期之间,除非我错过了一个方法。
我现在能想到的唯一方法是循环,这样就把所有排名1的行处理到一个表中,然后在表中排名2,依此类推,但对于300万行来说,这将是非常低效的。
对于在SQL中通常如何处理这一问题,您有什么想法吗?
SELECT CustomerID,Order_Date_m365,Order_Date,Spend_Value
FROM dbo.CustomerSales
1条答案
按热度按时间x9ybnkn61#
在这里,窗口函数可能对您没有帮助,因此您需要再次引用该表。我建议您使用带有子查询的
APPLY
来完成此操作。如果您有相关的索引,那么这可能是更有效的方法: