sql дата подзапрос получить последний - PullRequest
0 голосов
/ 11 сентября 2018

У меня ошибка "не удалось связать" при попытке этого SQL

SELECT 
    promotions.id_product, price.value
FROM 
    promotions
LEFT OUTER JOIN 
    (SELECT TOP 1 id_product, date, value
     WHERE date > promotions.date) AS price ON price.id_product = promotion.id_product

О SQL ... У меня есть две таблицы, и мне нужно получить правильную цену во время проведения рекламных акций (непоследняя цена) ...

Таблица акций

id_product  | DATE       | VALUE   | Finish_date  
1           | 2018-05-01 | 20      | 2018-06-03
1           | 2018-07-02 | 18      | 2018-08-01

Таблица цен

id_product  | DATE       | VALUE
1           | 2018-04-01 | 30
1           | 2018-06-02 | 25 

1 Ответ

0 голосов
/ 11 сентября 2018

Ваш подзапрос с join нельзя сопоставить с другими таблицами в предложении from.

Вместо этого используйте outer apply:

SELECT p.id_product, pr.value
FROM promotions p OUTER APPLY
     (SELECT TOP 1 pr.id_product, pr.date, pr.value
      FROM prices pr
      WHERE pr.id_produto = p.id_produto AND pr.date > p.date            
      ORDER BY pr.date DESC
     ) pr;

Я добавил ORDER BY. Предположительно, вам нужна «следующая» цена после даты акции, а не произвольная цена впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...