SQL连接3个ID和日期表

时间:2018-10-04 08:23:15

标签: sql join

我有以下测试数据。有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

0 个答案:

没有答案