此查询的目的是返回在售商品及其价格,并且价格应该是最接近但不等于传入日期的日期的价格,基本上是最近可用的价格。并非每天都有价格记录。将聚合选择语句放在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'
实际查询略微复杂,但本质上是这个问题。感谢您的意见。
编辑:会返回多个产品。
编辑:我正在尝试@Remus Rusanu和@km的建议(尽管@Remus Rusanu已经删除了),包括我的原始建议在内的所有三种方法,在性能方面大致相同。我正试图决定它们中是否有一种以其他难以捉摸的方式提供了额外的好处,例如维护、自说明等,因为这将由其他人来维护。再次感谢。