Проверьте T- SQL, чтобы увидеть, что данные находятся в диапазоне, затем выберите запись из таблицы A - PullRequest
0 голосов
/ 21 апреля 2020

Таблица A

ID   name     date_from     date_to      region   manager
---------------------------------------------------------
1    Harry    2019-12-01    2020-01-01    south    ABC
1    Harry    2020-01-01    2020-03-01    north    BCD
1    Harry    2020-03-01       NULL       East     DCE

Таблица B

Date          name     H_time    T_time  
---------------------------------------
2019-12-01    Harry     30        20
2020-01-01    Harry     20        10
2020-02-01    Harry     40        50
2020-04-01    Harry     50        60

Я хотел проверить дату таблицы B, попадающую в указанный выше диапазон дат, и вернуть указанный c регион и информацию о менеджере, например ...

Таблица C

Date          name     H_time    T_time   region  manager
---------------------------------------------------------
2019-12-01    Harry     30        20      south    ABC
2020-01-01    Harry     20        10      north    BCD
2020-02-01    Harry     40        50      north    BCD
2020-04-01    Harry     50        60      East     DCE   

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете использовать join:

select b.*, a.region, a.manager
from b join
     a
     on b.name = a.name and
        b.date >= a.date_from and
        (b.date <= date_to or a.date_to is null);
0 голосов
/ 21 апреля 2020

Исходя из вашего ожидаемого результата, это должно сработать

SELECT b.*, a.region, a.manager
FROM table_b b 
INNER JOIN table_a a on b.name = a.name 
WHERE
     (b.date >= a.date_from and b.date < a.date_to)
OR
     (b.date >= a.date_from and a.date_to IS NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...