2017-04-09 46 views
-1

我有以下數據:白天END_DATE和之間選擇其中一天不

表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 

我需要從表1哪天不選擇數據在table2的daytime和end_date之間,如果table1 day(如'2016年7月16日'與table2'2016年7月16日06:00'同一天)類似於day2或end_date字段中的table2 day,那麼它仍然需要選擇數據這一天。如果End_date爲null,那麼它必須是sysdate - nvl(End_date,sysdate)。

例如,當選擇白天= '16 2016' 年7月從表1它必須是:

F23 123df  16 Jul 2016 
F24 124df  16 Jul 2016 

但是,當爲'17 2016' 年7月選擇,那麼它必須是:

F24 124df  17 Jul 2016 

當選擇了'18 2016' 年7月它必須是:

F23 123df  18 Jul 2016 
F24 124df  18 Jul 2016 

感謝, 小號

回答

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 
     );