我有两个表,一个有库存,另一个有不同日期的价格表。我需要在特定日期更新表1,这可能在表2中没有,所以我需要回顾最后的可用价格。我怎样才能做到这一点。以下是我的表格:
Table1
SrNo Commodity Date Price
1 Car 20-Aug-2015 <115>
2 Cycle 20-Aug-2015 <78>
Table2
SrNo Commodity Price Date
1 Car 100 1-Jan-2015
2 Car 120 1-Jun-2015
3 Car 115 20-Aug-2015
4 Cycle 80 10-May-2015
5 Cycle 78 10-Jun-2015
我尝试使用内部联接,但我可以将它用于Car,因为它在2015年8月20日有一个条目。我希望循环显示为78,因为它是最后一个可用价格。
有人可以建议我怎么做。
谢谢, 斯瓦特
答案 0 :(得分:0)
下一个代码可以在T-SQL上运行 - 试试吧
update t1 set
t1.Price = t2.Price
from Table1 as t1
outer apply (
select top 1
t2.Price
from Table2 as t2
where t2.SrNo = t1.SrNo
order by t2.Date desc
) t2
答案 1 :(得分:0)
试试这个:
UPDATE a
SET a.Price = b.Price
FROM Table1 a
INNER JOIN Table2 b ON a.Commodity = b.Commodity
WHERE b.[Date] = (SELECT MAX([Date])
FROM Table2 c
WHERE b.Commodity = c.Commodity
AND c.[Date] <= a.[Date]
GROUP BY c.Commodity)
答案 2 :(得分:0)
MySql
UPDATE Table1
JOIN ( SELECT Commodity,Price
FROM Table2 JOIN (SELECT Table2.Commodity,MAX(DATE) As LastDate
FROM Table2
GROUP BY Commodity ) AS Tmp1
ON Table2.Date = Tmp1.LastDate
) AS Tmp2
ON Tmp2.Commodity = Table1.Commodity
SET Table1 .Price = Tmp2.Price
在内部查询MAX(DATE)
中计算 Tmp1
以获取商品的最后可用价格