比较客户订单金额的SQL查询

时间:2018-09-06 19:07:29

标签: sql-server

我正在寻找一个查询,该查询可以将客户的最新订单购买金额与该客户最近一次购买的先前订单金额进行比较。请在下面查看示例数据截图:

IMG1

理想情况下,我希望查询在结果中查找以下内容:

  • 最近的订单日期之前的前一个订单的总金额(在这种情况下,9/6/18将是最近的,而2/2/17将是最后一次购买)

  • 最近一笔订单与最后一笔订单之间的金额差异($ 2000- $ 25 = $ 1975)

  • 在查询中创建一个条件,以查找最近一次订购尝试为1000>最近一次购买金额且客户的帐户年龄大于60天的客户

注意:最后一个项目符号的这些条件可以根据需要进行修改(客户的帐户年龄大于90天,订单金额为$ 500等)

谢谢您的协助!

1 个答案:

答案 0 :(得分:1)

从2012年开始,您可以使用LAG

declare @amount decimal(16,2) = 1000
declare @days int = 60

select 
   *
   ,TotalWithPrevious = [Order Amount] + lag([Order Amount]) over (partition by UserID order by [Order Date] desc)
   ,DifferenceofPrevious = [Order Amount] - lag([Order Amount]) over (partition by UserID order by [Order Date] desc)
   ,CheckCondition = case 
                      when [Order Amount] - lag([Order Amount]) over (partition by UserID order by [Order Date] desc) >= @amount
                           and datediff(day,[Order Date],lag([Order Date]) over (partition by UserID order by [Order Date] desc)) >= @days 
                           then 'True' 
                           else 'False' 
                      end
from YourTable