我有一张像这样的表[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
我需要加入这些表格,价格和交易并排。规则是如果在[价格]中找不到日期,请使用最新价格
所以,1-5-2012 Potion将花费500美元
结果应该是这样的
日期项目金额价格
1-1-2012药水1 500
1-5-2012药水1 500
所以,我不知道该怎么做,如果您知道解决方案,请提供帮助。 感谢
答案 0 :(得分:2)
一个简单的SCALAR SUBQUERY就可以了。
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;
答案 1 :(得分: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