【发布时间】:2022-09-30 21:48:49
【问题描述】:
我有一张表,其中包含按日期划分的大约 300 万行客户销售额。
对于每个 CustomerID 行,我需要获取 Spend_Value 的总和 WHERE Order_Date BETWEEN Order_Date_m365 AND Order_Date
Order_Date_m365 = OrderDate 减去 365 天。
我刚刚尝试了自加入,但当然,由于行重叠日期,这给出了错误的结果。
如果有窗口函数的方法,这将是理想的,但我尝试并且不能在函数中执行日期之间的操作,除非我错过了方法。
我现在能想到的唯一方法是循环处理所有排名 1 的行到一个表中,然后在一个表中排名 2,等等,但这在 300 万行上效率很低。
关于通常如何在 SQL 中处理的任何想法?
SELECT CustomerID,Order_Date_m365,Order_Date,Spend_Value
FROM dbo.CustomerSales
-
我会问你是否真的需要全部 300 万从您的查询返回的行以及您想要/需要他们在前 365 天的订单的
SUM的事实。 -
嗨 Larnu,是的,不幸的是我需要它,因为它会在 365 天内输入到分析系统中,用户可以在其中选择任何日期范围,它将用于按 High、Lapsing、InActive 等对客户进行细分,并查看动态订单之间
标签: sql sql-server sql-server-2014