Отчет 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
Другие вопросы по тегам