Отчет SQL Query for Order Status из базы данных Oracle
У меня есть таблица Order_Status в Oracle DB 11, в которой, например, хранится идентификатор заказа и весь его статус.
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, чем Tool, а затем java.
1 ответ
Я предполагаю, что ваше требование: "статус будет меняться каждые 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