2013-02-23 16 views
0

列的最大值我有兩個表是這樣的:設置一個列的值表B與表一

Application 
ApplicationID ApplicationDesc VersionNo 
1    APP1    1 
2    APP2    1 
3    APP3    1 
4    APP1    2 
5    APP2    2 
6    APP1    3 

Order 
OrderID  ApplicationID  OrderDescription 
1   1     Belongs to APP1 version 1 
2   4     Belongs to APP1 version 2 
3   6     Belongs to APP1 version 3 

我想與最新的applicationID表,以便更新列的applicationID相應應用程序的版本。

我想要的數據看起來像這樣:

Order 
OrderID  ApplicationID  OrderDescription 
1   6     Belongs to APP1 version 1 
2   6     Belongs to APP1 version 2 
3   6     Belongs to APP1 version 3 

如何做到這一點?請幫忙。

回答

2

您可以使用公用表表達式來尋找最新的applicationID,然後再加入你的更新語句的CTE:

;WITH cteNewest(ApplicationID, NewestApplicationID) 
AS(
    SELECT 
    ApplicationID 
    ,MAX(ApplicationID) OVER(PARTITION BY ApplicationDesc) 
    FROM Application 
) 

UPDATE o 
SET o.ApplicationID = new.NewestApplicationID 
FROM [Order] o 
JOIN cteNewest new 
    ON o.ApplicationID = new.ApplicationID; 

有一個SQLFiddle

相關問題