Цель этого запроса - вернуть товары и их цены на товары, выставленные на продажу, и цена должна быть с даты, ближайшей к ней, но не равной дате, переданной, по сути, самой последней доступной цене. Там нет ценовых записей на каждый день. Что-то не так с наличием агрегатного оператора select в предложении where. Есть лучший способ сделать это? Может быть в критериях объединения?
select
p.ProductName,
pp.Price,
pp.Date,
from product p
inner join productprice pp on p.productid = pp.productid
where
pp.evaluationdate = (select max(Date) from productprice
where productid = p.productid
and date < @DateIn)
and p.producttype = 'OnSale'
На самом деле запрос немного сложнее, но это, по сути, проблема. Спасибо за ваш вклад.
EDIT
Будет возвращено более одного продукта
EDIT
Я экспериментирую с предложениями @Remus Rusanu и @ km (хотя @Remus Rusanu удалил его), все три, включая мой оригинал, кажутся примерно одинаковыми с точки зрения производительности. Я пытаюсь решить, предлагает ли один преимущество над другими каким-то другим нематериальным способом, то есть обслуживанием, самодокументированием и т. Д., Поскольку это будет поддерживаться кем-то другим. Еще раз спасибо.