滞后分区等效MS Access

时间:2012-08-23 04:56:05

标签: ms-access

我在MS Access中寻找等效的以下Oracle查询。我知道Lagover(Partition by)功能在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

1 个答案:

答案 0 :(得分:4)

Oracle example工作并考虑您的查询,您可能会发现子查询适合。如果没有,可能会有用户定义函数。

这将按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对于每个订单都有不同的日期,因此仅具有ORDER BY日期的子查询就足够了,但是,Access中的Top查询返回匹配,因此如果有可能重复,则最好订购由相关领域和唯一的id。