4

我有一张[Price]这样的桌子

日期 项目 价格

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

桌子[Transaction]

日期 项目 金额

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

我需要加入这些表,价格和交易并排。规则是如果在 [Price] 中没有找到日期,则使用最新价格

因此,2012 年 1 月 5 日药水将花费 500

结果应该是这样的

日期 项目 金额 价格

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

所以,我不知道如何做到这一点,如果你知道解决方案,请帮助。谢谢

4

2 回答 2

2

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

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;
于 2012-11-15T13:36:29.570 回答
0

这应该有效:

 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
于 2012-11-15T13:38:37.000 回答