代码之家  ›  专栏  ›  技术社区  ›  shrikant.sharma

从Oracle数据库查询订单状态报告

  •  -1
  • shrikant.sharma  · 技术社区  · 7 年前

    我在Oracle DB 11中有一个Order状态表,它存储订单id及其所有状态,例如

    order id    status                  date
    100         at warehouse            01/01/18
    100         dispatched              02/01/18
    100         shipped                 03/01/18
    100         at customer doorstep    04/01/18
    100         delivered               05/01/18
    

    几天前,一些订单被困在仓库里,但不可能每天都检查每个订单的状态,所以直到我们收到一封来自业务部门的大升级邮件,该邮件引起了系统或每日报告的要求,该邮件将告诉我们所有订单的状态以及当前的状态和一些条件,例如如果订单的日期超过2天并且数据库中没有更新新状态,则将其标记为红色或突出显示。

    我们已经安排了cron的一些报告,但是即使为状态报告创建一个SQL查询,它也不会突出显示挂起的订单。

    注意:-欢迎使用SQL、Java或其他一些工具建议,但首选SQL,然后是工具,然后是Java。

    1 回复  |  直到 7 年前
        1
  •  0
  •   DingDong    7 年前

    我假设你的要求是“如果没有什么问题,状态每两天就会改变”

    select * from (    
        select order_id, 
                   status, 
                   update_date, 
                   RANK() OVER (PARTITION BY order_id ORDER BY update_date DESC) as rank 
            from Order_Status 
            where status != 'delivered'   
    )
    where update_date < sysdate - 2 and rank = 1