我有以下数据:
表1:
Code code_id day
F23 123df 16 Jul 2016
F23 123df 17 Jul 2016
F23 123df 18 Jul 2016
F23 123df 19 Jul 2016
F23 123df 20 Jul 2016
F24 124df 16 Jul 2016
F24 124df 17 Jul 2016
F24 124df 18 Jul 2016
F24 124df 19 Jul 2016
F24 124df 20 Jul 2016
表2:
Code code_id status daytime End_date
F23 123df down 16 Jul 2016 06:00 am 18 Jul 2016 08:00 pm
F23 123df down 19 Jul 2016 05:00 am 21 Jul 2016 03:45 pm
F23 123df down 23 Jul 2016 02:40 am
我需要从table1中选择数据,其中白天不在day2和end_date之间,如果是table1天(例如' 2016年7月16日'是同一天' 2016年7月16日06 :00'来自table2)就像是从daytime或End_date字段开始的table2天,然后它仍然需要选择当天的数据。如果End_date为null,那么它必须是sysdate - nvl(End_date,sysdate)。
例如,选择日期=' 2016年7月16日'从table1开始,它必须是:
F23 123df 16 Jul 2016
F24 124df 16 Jul 2016
但是当选择2016年7月17日'然后它必须是:
F24 124df 17 Jul 2016
选择' 2016年7月18日'它必须是:
F23 123df 18 Jul 2016
F24 124df 18 Jul 2016
感谢, 小号
答案 0 :(得分:0)
SELECT *
FROM table1 t
WHERE NOT EXISTS (
SELECT 1
FROM table2 x
WHERE t.code = x.code
AND t.code_id = x.code_id
AND t.day >= x.daytime
AND t.day + INTERVAL '86399' SECOND <= x.end_date
);