我有一個架構與客戶表和訂單表。客戶可以在多個日期下訂單。對於與客戶相對應的每個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函數提供在當前位置之後的給定偏移量處訪問行。 –