SQL объединяет 3 таблицы по ID и датам - PullRequest
0 голосов
/ 04 октября 2018

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

Мне нужно объединить все таблицы, чтобы строки, отмеченные синим, были связаны со строками, отмеченными синим, а строки, отмеченные красным, - со строками, отмеченными красным.

В соединении должны использоваться столбцы From и To, которые существуют в каждой таблице.

Обновление: я пробовал следующее:

SELECT *
  FROM Sales co 
  LEFT JOIN SalesDelivery cd
    ON co.SalesID = cd.SalesID 
       AND cd.From BETWEEN co.From AND co.To 
       AND cd.To BETWEEN co.From AND co.To
  LEFT JOIN SalesDeliveryMonth cdp 
    ON cd.SalesDeliveryID = cdp.SalesDeliveryID 
    AND cdp.From BETWEEN cd.From AND cd.To 
    AND cdp.To BETWEEN cd.From AND cd.To

Таблица продаж:

 SalesID    Name    Revenue     From        To          Current row
    100     New CRM 250000.00   1800-01-01  2018-10-03  0
    100     New CRM 500000.00   2018-10-03  9999-12-31  1

Таблица SalesDelivery:

 SalesID SalesDeliveryID SalesDeliveryName      Revenue   SalesStart    From  To    Current row
    100  AB100           New CRM                250000.00 2018-07-01    1800-01-01  2018-10-03  0
    100  AB100           New CRM                500000.00 2018-07-01    2018-10-03  9999-12-31  1
    100  ABM100          New CRM - maintenance  0.00      2018-07-01    2018-10-03  9999-12-31  1

Таблица SalesDeliveryMonths:

RevenueMonth    Month   SalesDeliveryID SalesID From    To  Current row
833333.3333 2018-07-01  AB100   100 1800-01-01  2018-10-04  0
166666.6667 2018-07-01  AB100   100 2018-10-04  9999-12-31  1
833333.3333 2018-08-01  AB100   100 1800-01-01  2018-10-04  0
166666.6667 2018-08-01  AB100   100 2018-10-04  9999-12-31  1
833333.3333 2018-09-01  AB100   100 1800-01-01  2018-10-04  0
166666.6667 2018-09-01  AB100   100 2018-10-04  9999-12-31  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...