如何根据日期连接表

时间:2013-11-28 05:20:04

标签: sql sql-server-2008 join

COMMISSION

PRODUCT_ID   DATE       COMMISSION
1           20110101       27.00     
1           20120101       28.00
1           20130705       30.00
2           20110101       17.00
2           20120501       16.00
2           20130101       18.00
...

ORDER

PRODUCT_ID   DATE        PRICE
1            20110405      2500
2            20130402      3000 
2            20130101      1900

期望的输出

PRODUCT_ID      DATE      PRICE       COMMISSION
1             20110405    2500         27.00
2             20130402    3000         16.00
2             20130101    1900         18.00
  • Commission表根据产品ID和日期记录佣金%。
  • Order表基本上是特定日期的订单记录,

我想加入两张表并根据订单日期提供适当的佣金。例如,您可以看到第一个订单的佣金为27.00,因为product_id 1的日期介于20110101和20120101之间。

我该怎么做?看起来像一个简单的1对n关系,但我无法弄明白。

1 个答案:

答案 0 :(得分:5)

尝试

SELECT o.*,
(
  SELECT TOP 1 commission
    FROM commission
   WHERE product_id = o.product_id
     AND date <= o.date
   ORDER BY date DESC
) commission
  FROM [order] o 

这是 SQLFiddle 演示