Проверьте дату выхода между датами и выберите определенную строку c в зависимости от типа - PullRequest
0 голосов
/ 29 мая 2020

TableA

id        dtchk
1001    3/31/2018
1002    9/30/2018
1004    3/31/2019
1003    5/25/2018
1005    9/30/2019
1006    3/31/2020

TableB

id     type  startdate  endate      name
1001    1    4/5/2018   12/31/2025  akshi
1002    100  4/27/2015  12/31/2023  polard
1004    100  4/1/2017   12/31/2019  kathi
1003    1    1/25/2018  5/25/2019   smoth
1005    1    3/21/2017  12/31/2020  sumi
1005    100  3/26/2019  12/31/2021  chechi
1006    1    2/28/2019  3/31/2021   paul
1006    100  2/28/2017  3/31/2019   rand

Сначала нам нужно проверить, что dtchk находится между startdate и endate на основе идентификатора, если дата существует между этими датами, тогда нам нужно проверить типы, если оба типа 1 и 100 подходят, затем выберите строку с типом 100, иначе выберите как есть, если дата соответствует этим датам

вывод

id      name
1002    polard
1004    kathi
1003    smoth
1005    chechi
1006    paul

1 Ответ

0 голосов
/ 29 мая 2020

Думаю, ты хочешь apply:

select a.*, b.*
from a cross apply
     (select top (1) with ties b.*
      from b
      where b.id = a.id and
            a.dtchk between b.startdate and b.endate and
            b.type in (1, 100)
      order by b.type desc
     ) b;
...