我的 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;
/
我的问题是我想做一个选择,仅当航班在同一天出发和到达时才返回我的航班号。例如,航班“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');
太感谢了。