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 :(得分: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 演示