【发布时间】:2021-02-04 07:24:44
【问题描述】:
我想编写一个查询,该查询使用“加入概念”来为每个订单返回自同一客户的上一个订单以来经过的天数。
我正在使用AdventureWorks2017数据库,表Sales.SalesOrderHeader
我尝试了以下代码,但实际上我希望通过连接概念来实现:
select customerid,
orderdate,
salesorderid,
datediff(day,
(select top(1) s1.orderdate
from sales.SalesOrderHeader s1
where s1.CustomerID=s.CustomerID
and (s1.OrderDate = s.Orderdate
and s1.SalesOrderID < s.Salesorderid
or s1.OrderDate < s.orderdate)
order by s1.orderdate desc,s1.SalesOrderID desc
),
orderdate) as Daysdifference
from sales.SalesOrderHeader s
order by CustomerID,OrderDate,SalesOrderID
【问题讨论】:
-
它嵌套
WHERE对吗?这里有...AND...OR...AND (s1.OrderDate = s.Orderdate AND s1.SalesOrderID < s.Salesorderid OR s1.OrderDate < s.orderdate)
标签: sql sql-server lateral-join