Пример данных
Если вот такие данные, как:
ID,EQP,PREVIOUSTIME,TRANSACTIONTIME,OLDSTATE,NEWSTATE
1,HT-001,2020/01/01 12:00:00,2020/01/01 13:00:00,IDLE,RUN
2,HT-001,2020/01/01 13:00:00,2020/01/05 15:00:00,RUN,IDLE
3,HT-001,2020/01/05 15:00:00,2020/01/05 16:00:00,IDLE,RUN
4,HT-001,2020/01/05 16:00:00,2020/01/05 18:00:00,RUN,IDLE
5,HT-002,2020/01/01 12:00:00,2020/01/01 13:00:00,IDLE,RUN
6,HT-002,2020/01/01 13:00:00,2020/01/05 15:00:00,RUN,IDLE
7,HT-002,2020/01/05 15:00:00,2020/01/05 16:00:00,IDLE,RUN
8,HT-002,2020/01/05 16:00:00,2020/01/05 18:00:00,RUN,IDLE
То, что я ожидаю
запрос select * from SomeView
или select * from SomeFunction(datetime_of_now)
или сохранение в магазине, чтобы получить результат ниже (текущая дата 2020/01/06 12:00:00)
Date ,EQP ,STATE ,COST_TIME(Hour)
2020/01/01 ,HT-001 ,IDLE ,1
2020/01/01 ,HT-001 ,RUN ,11
2020/01/02 ,HT-001 ,RUN ,24
2020/01/03 ,HT-001 ,RUN ,24
2020/01/04 ,HT-001 ,RUN ,24
2020/01/05 ,HT-001 ,IDLE ,7 (1+6)
2020/01/05 ,HT-001 ,RUN ,2 (2+15)
2020/01/06 ,HT-001 ,IDLE ,12
2020/01/01 ,HT-002 ,IDLE ,1
2020/01/01 ,HT-002 ,RUN ,11
2020/01/02 ,HT-002 ,RUN ,24
2020/01/03 ,HT-002 ,RUN ,24
2020/01/04 ,HT-002 ,RUN ,24
2020/01/05 ,HT-002 ,IDLE ,7 (1+6)
2020/01/05 ,HT-002 ,RUN ,2 (2+15)
2020/01/06 ,HT-002 ,IDLE ,12
Тестовая демонстрационная ссылка
Oracle 11g Выпуск 2 | db <> fiddle
То, что я пытался встретить с трудностями
- Я не имею понятия разделить один день на несколько строк дат.
Например: split одна строка предыдущего времени ~ время транзакции 01/01 ~ 01/05 по крайней мере 5 строк - разделить последнюю на текущую дату