2012-08-23 163 views
3

我正在尋找MS Access中以下Oracle查詢的等同物。我知道,在滯後(按分區)功能不可用在MS Access,但尋找到acheive的相同的功能使用下面的MS Access ..感謝任何投入滯後分區等價MS Access

select t.*, 
to_char(date1,'yyyymm') month, 
lag(value1,1,0) over(partition by Id1,name1,office,product,overall order by date1) prev_val 
from test_prev t 
order by name1, 
office, 
overall, 
date1, 
product 

回答

4

Oracle example工作,並考慮您的查詢的查詢,你可能會發現一個子查詢會適合。如果不是,用戶定義函數將是一種可能性。

這與ORDER獨自返回由PRODUCT_ID

SELECT Orders.ORDER_DATE, 
     Orders.PRODUCT_ID, 
     Orders.QTY, 
     (SELECT Top 1 o.Order_Date 
     FROM Orders o 
     WHERE o.Order_Date<Orders.Order_Date 
     AND o.Product_ID=Orders.Product_ID 
     ORDER BY o.Order_Date DESC) AS PreviousOrder 
FROM Orders 
ORDER BY Orders.ORDER_DATE, Orders.PRODUCT_ID 

以前的訂單日期在樣本數據,每個PRODUCT_ID對於每個訂單不同的日期,所以子查詢BY日期是足夠的,但是,在熱門查詢訪問返回匹配,所以如果重複是可能的,最好是通過相關字段和唯一ID進行排序。