Как связать таблицу с другой в зависимости от двух столбцов даты? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть две таблицы, которые

T1:

UserID    Tier    BeginDate                  EndDate
8278020   1       2019-03-02 18:33:04.893    2019-03-28 10:34:33.837
8278020   2       2019-03-28 10:34:33.837    2019-04-01 16:48:22.107
8278020   3       2019-04-01 16:48:22.107    2019-04-07 21:44:40.060
8278020   4       2019-04-07 21:44:40.060    2019-06-30 23:59:59.999

Т2:

UserID     GiftCardID    UseDate       OrderID     IsUsed
8278020    165491838     2019-03-06    23057796    1
8278020    165491839     2019-03-10    23106429    1
8278020    165491840     2019-03-24    23277217    1
8278020    166418161     NULL          NULL        0
8278020    166418162     NULL          NULL        0
8278020    167026357     2019-04-22    23594414    1
8278020    167026358     2019-04-28    23668492    1

Я хочу сопоставить две таблицы, чтобы показать каждый уровень клиента, когда он / она использовали подарочную карту.

Например, когда пользователь использовал Giftcard с «165491839», он находился на уровне 1.

Или при GiftCardID = '167026357' уровень равен 4.

Я не мог найти, как сопоставить таблицы в соответствии с этим.

Я жду вашей помощи ...

1 Ответ

1 голос
/ 05 июля 2019

Просто используйте JOIN:

select t2.*, t1.tier
from table2 t2 left join
     table1 t1
     on t2.userid = t1.userid and
        t2.usedate >= t1.begindate and
        t2.userdate < t1.enddate;

Это left join, поэтому вы не потеряете строки, если по какой-то причине даты не совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...