Доступ к запросу для возврата записей, не найденных в диапазоне дат - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть следующие примеры данных

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 вернуть все сборы (таблица 2), которые не попадают между начальной и конечной датамиТаблица 1.Итак, с приведенными выше примерами данных будет возвращено следующее: -

Results     
REF_NO  CHG_START_DATE  CHG_END_DATE
456     01/02/2018      28/02/2018

Я знаю, как объединить 2 таблицы, используя

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

, но я не уверен, какдля удовлетворения несоответствия даты

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вот альтернативный подход с использованием объединений вместо коррелированных подзапросов:

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)
)
0 голосов
/ 25 февраля 2019

Если достаточно просто посмотреть даты начала и окончания:

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
                 ) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...