2013-02-23 5 views
0

У меня есть две таблицы, как это:Установите значение столбца в таблице B с максимальным значением столбца в таблице A

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, а затем присоединиться ваше заявление об обновлении КТРА:

;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

Смежные вопросы