2016-05-30 43 views
0

我有這個疑問這做什麼,我需要的,除非在價格上有多個行......基本上,我需要看看PRICE.DATE_START,並確定哪些具有最新的開始日期和在我的更新條款中使用該日期。我嘗試過CTE的幾個變種,但沒有成功。任何反饋意見。更新與最新的行數據

UPDATE ST_EXTRA 
SET ST_EXTRA.colEMAILDATE = PRICE.DATE_START, ST_EXTRA.colEMAILPRICE = PRICE.PRICE 
FROM ST_EXTRA 
INNER JOIN PRICE ON ST_EXTRA.NUMBER = PRICE.NUMBER 
WHERE colEMAIL = 1 

回答

0

相反的inner join,使用cross apply

UPDATE e 
    SET colEMAILDATE = p.DATE_START, 
     colEMAILPRICE = p.PRICE 
FROM ST_EXTRA e CROSS APPLY 
    (SELECT TOP 1 p.* 
     FROM PRICE p 
     WHERE e.NUMBER = p.NUMBER 
     ORDER BY DATE_START DESC 
    ) p 
WHERE colEMAIL = 1; 
+0

謝謝,接收附近有語法錯誤 '應用'。和關鍵字'ORDER'附近的語法錯誤。 – Justin

+0

@Justin。 。 。哎呀,留在'十字架外面。 –

+0

完美!一如既往地感謝您的幫助。 – Justin