我在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。
答案 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