我有一个架构与客户表和订单表。客户可以在多个日期下订单。对于与客户相对应的每个order_date,我需要先前的order_date。查询拉取与客户相对应的上一个订单日期?
说一个客户下了4个订单,然后对于最新订单(第4个订单) - 它必须提取当前订单日期和上一个订单日期(第3个订单)。对于客户发出的第三个订单,它必须将第三个order_date作为当前的order_date和先前的order_date(第二个订单),依此类推。
我使用下面的查询来获取先前order_date的,然后用current_query加盟即可导致::
select customerid, orderid, order_date as previous_order_date
from (
select c.customerid, o.orderid, o.order_date,
row_number() over (partition by c.customerid, o.orderid
order by o.order_date) rown
from customers c join orders o on c.customerid = o.customerid
) a
where rown = 2
但问题是,我得到相应的客户ID,而要求是一个日期 - 就是前一个order_date,对应于客户的当前order_date。
任何建议都会有帮助!由于
好找!说明:http://docs.oracle.com/database/121/DWHSG/analysis.htm#CHDCBCGF “因为这些函数在没有自联接的情况下同时访问多个表的一行,所以它们可以提高处理速度LAG函数提供在当前位置之前的给定偏移量处的行,并且LEAD函数提供在当前位置之后的给定偏移量处访问行。 –