SQL 如果在相似日期中找不到数据,请获取最后日期



我有一个这样的表格[Price]

日期项目价格

1-1-2012 Potion 500
1-1-2012 Elixir 5000
1-10-2012 Potion 600

[Transaction]

日期项目金额

2012-1-1 药水1
2012-5-1 药水1

我需要连接这些表,价格和交易并排。规则是如果在[价格]中找不到日期,请使用最新价格

所以,1-5-2012 药水将花费 500

结果应该是这样的

日期 物料金额 价格

2012-1-1 药水 1 500
2012-5-1 药水 1 500

所以,我不知道该怎么做,如果你知道解决方案,请帮忙。谢谢

一个简单的标量子查询就可以了。

select t.date, t.item, t.amount,
       (select top(1) price
          from price
         where t.item=p.item and p.date <= t.date
      order by p.date desc) price
  from [transaction] t;

这应该有效:

 SELECT 
    t.Date, 
    t.Item, 
    t.Amount,
    ISNULL(
       p.Price, 
       (
          SELECT TOP 1 p1.Price FROM [Price] p1 
          WHERE p1.Item = t.Item 
          ORDER BY Date DESC
       ) [Price]
 FROM 
     [Transaction] t 
     LEFT OUTER JOIN
         [Price] p
         ON 
         t.Date = p.Date
         AND
         t.Item = p.Item

最新更新