Мне нужно написать запрос, который выбирает самый ранний час на основе столбца AIRCRAFTREG.Когда найден самый ранний час, он будет отмечен цифрой «1», а другой (не первый полет) - «0» в столбце FIRST_FLIGHT.Вот мой запрос:
select MIN(TO_CHAR(SCHEDULED_DEPDT_LC, 'DD-MM-YY HH24:MI')) SCHED_DEP,
AIRCRAFTREG,
CASE WHEN MIN(TO_CHAR(SCHEDULED_DEPDT_LC, 'DD-MM-YY HH24:MI'))
IN (TO_CHAR(SCHEDULED_DEPDT_LC, 'DD-MM-YYYY HH24:MI'))
THEN 1 ELSE 0 END FIRST_FLIGHT
from DBODSXML4OPS.XML4OPS
where STATUS IN ('Scheduled')
and SERVICETYPE IN ('J','G')
and ACTUAL_BLOCKOFF_LC is not null
and ACTUAL_BLOCKON_LC is not null
and (ACTUAL_BLOCKON_LC-SCHEDULED_ARRDT_LC)*24*60 > '+000000015 00:00:00.000000000'
and (ACTUAL_BLOCKOFF_LC-SCHEDULED_DEPDT_LC)*24*60 > '+000000015 00:00:00.000000000'
and TO_CHAR(SCHEDULED_DEPDT_LC, 'yyyy-mm-dd') BETWEEN '2018-05-02' and '2018-05-02'
group by AIRCRAFTREG, SCHEDULED_DEPDT_LC
order by AIRCRAFTREG;
Результат:
+----------------+-------------+--------------+
| SCHED_DEP | AIRCRAFTREG | FIRST_FLIGHT |
+----------------+-------------+--------------+
| 02-05-18 14:25 | PK-GAA | 0 |
| 02-05-18 16:55 | PK-GAI | 0 |
| 02-05-18 12:50 | PK-GAJ | 0 |
| 02-05-18 14:40 | PK-GAJ | 0 |
| 02-05-18 16:05 | PK-GAJ | 0 |
+----------------+-------------+--------------+
Ожидаемый:
+----------------+-------------+--------------+
| SCHED_DEP | AIRCRAFTREG | FIRST_FLIGHT |
+----------------+-------------+--------------+
| 02-05-18 14:25 | PK-GAA | 1 |
| 02-05-18 16:55 | PK-GAI | 1 |
| 02-05-18 12:50 | PK-GAJ | 1 |
| 02-05-18 14:40 | PK-GAJ | 0 |
| 02-05-18 16:05 | PK-GAJ | 0 |
+----------------+-------------+--------------+