В моей базе данных Oracle есть следующая таблица:
CREATE TABLE test
(
flight NUMBER(4),
date DATE,
action VARCHAR2(50),
CONSTRAINT pk PRIMARY KEY (flight,date)
);
и следующие регистры:
BEGIN
INSERT INTO test VALUES ('1234', '2020-02-29 18:00', 'Departure');
INSERT INTO test VALUES ('1234', '2020-02-29 19:00', 'Arrival');
INSERT INTO test VALUES ('4321', '2020-02-20 22:00', 'Departure');
INSERT INTO test VALUES ('4321', '2020-02-21 04:30', 'Arrival');
END;
/
Моя проблема в том, что я хочу сделать SELECT, который возвращает мне номер рейса только тогда, когда он вылетел и прибыл в тот же день. Например, рейс «1234» вылетел в день 29 и прибыл в день 29, но, с другой стороны, рейс «4321» вылетел на день 20 и прибыл в день 21. Я только хотел бы выбрать рейс «1234». ', потому что это единственный, кто отвечает требованиям.
Я думал о следующем выборе, но он не работает, потому что подзапрос возвращает более одного значения:
SELECT flight
FROM test
WHERE action = 'Departure'
AND TO_CHAR(date, 'YYYY-MM-DD') = (SELECT TO_CHAR(date, 'YYYY-MM-DD')
FROM test
WHERE action = 'Arrival');
Большое спасибо.