Sql 在日期范围之间未找到返回记录的访问查询

Sql 在日期范围之间未找到返回记录的访问查询,sql,ms-access,Sql,Ms Access,我有以下示例数据 Table1 REF_NO SUPP_START_DATE SUPP_END_DATE 123 01/01/2018 31/12/2018 456 01/01/2017 31/12/2017 789 01/01/2016 31/12/2016 Table2 REF_NO CHG_START_DATE CHG_END_DATE 123 01/03/2018 31/03/2018

我有以下示例数据

Table1      
REF_NO  SUPP_START_DATE SUPP_END_DATE
123     01/01/2018      31/12/2018
456     01/01/2017      31/12/2017
789     01/01/2016      31/12/2016

Table2      
REF_NO  CHG_START_DATE  CHG_END_DATE
123     01/03/2018      31/03/2018
123     01/04/2018      30/04/2018
456     01/02/2018      28/02/2018
456     01/01/2017      31/01/2017
789     01/07/2016      31/07/2016
我想知道是否有可能在Access SQL中返回不在表1开始日期和结束日期之间的所有费用(表2)。因此,使用上面的示例数据,将返回以下内容:-

Results     
REF_NO  CHG_START_DATE  CHG_END_DATE
456     01/02/2018      28/02/2018
我知道如何使用

SELECT table1.ref_no, table2.CHG_START_DATE, table2.CHG_END_DATE
FROM table1 
LEFT JOIN table2 ON table1.ref_no = table2.ref_no

但是,如果只看开始日期和结束日期就足够了,我不知道如何处理日期不匹配的问题:

select t2.*
from table2 t2
where not exists (select 1
                  from table1 as t1
                  where t1.refno = t2.refno and
                        t2.CHG_START_DATE between UPP_START_DATE and SUPP_END_DATE
                 ) or
      not exists (select 1
                  from table1 as t1
                  where t1.refno = t2.refno and
                        t2.CHG_END_DATE between UPP_START_DATE and SUPP_END_DATE
                 ) ;

这里有一种使用联接而不是相关子查询的替代方法:

select t2.* from table1 t1 inner join table2 t2 on t1.ref_no = t2.ref_no 
where not
(
    (t2.chg_start_date between t1.supp_start_date and t1.supp_end_date) and
    (t2.chg_end_date   between t1.supp_start_date and t1.supp_end_date)
)