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

SQL Query for Order Status report from Oracle DB

我在 Oracle DB 11 中有一个 table Order_Status,它存储订单 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。

我假设您的要求是 "status will always change in every 2 days, if not there is something wrong"

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