2013-11-28 142 views
0

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关系,但我无法弄清楚。

+0

是在有希望的结果日期错别字? – user2705620

+0

是的。谢谢你让我知道。固定。 – l46kok

+0

我相信你想要的输出是''20130402'上的product_id'2'的佣金应该是'18.00'而不是'16.00' – peterm

回答

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演示