2013-11-28 2 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.

Как это сделать? Похоже, что это простая связь от одного до одного, но я не могу понять это.

+0

есть опечатки в желаемые даты результата? – user2705620

+0

Да. Спасибо, что дали мне знать. Исправлена. – l46kok

+0

Я верю в ваш желаемый результат, комиссия за товар_ид '2' на' 20130402' должна быть '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 демо

Смежные вопросы