我有一个这样的表格[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