SQL объединиться с датами - PullRequest
0 голосов
/ 04 мая 2020

У меня есть таблица A со столбцами:

customer_id, month, amount

Месяц похож на 2015/12/01, то есть сумма, выплаченная в декабре 2015 года.

Затем есть таблица B со столбцами:

customer_id, plan_id, start_date, end_date

Это информация о том, когда конкретный клиент начинал и заканчивал с использованием определенного плана. Текущий план будет иметь end_date NULL. В прошлом один клиент мог использовать много разных планов.

Мне нужно добавить столбец plan_id в таблицу A, соединив эти две таблицы, но я не знаю, как поступить с датами.

Обратите внимание, что для каждого клиента один месяц должен соответствовать только одному плану. Таким образом, даже если start_date для плана - 2015/11/02, его следует применять только на следующий месяц (2015/12/01).

1 Ответ

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

Это в основном соединение, но с неравенствами:

select a.*, b.*
from a left join
     b
     on a.customer_id = b.customer_id and
        a.month >= b.start_date and
        (a.month <= b.end_date or b.end_date is null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...