尝试此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
答案 0 :(得分:1)
具有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
。大概您希望促销日期之后的“下一个”价格,而不是之后的任意价格。