[英]SQL Join 2 tables with “ON” on max value in second table
我有2個表,一個有庫存,另一個有不同日期的價格表。 我需要在特定日期更新表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,因為它是最后一個可用價格。
有人可以建議我怎么做。
謝謝,斯瓦蒂
下一個代碼將適用於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
嘗試這個:
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)
對於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
在內部查詢Tmp1
計算MAX(DATE)
以獲得商品的最后可用價格
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.