簡體   English   中英

SQL在第二個表中加入2個表,其中“最大值”為“ON”

[英]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)以獲得商品的最后可用價格

SQLFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM