来自Oracle DB的SQL查询订单状态报告

时间:2018-07-31 04:12:32

标签: java database oracle database-administration

我在Oracle DB 11中有一个表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天且DB中没有针对该订单更新任何新状态,然后将其标记为红色或突出显示。 / p>

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

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

1 个答案:

答案 0 :(得分:0)

我假设您的要求是“如果没有任何问题,状态将每隔2天更改一次”

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