2012-07-02 46 views
3

我试图将列更新为最大值,但仅当按适当的标识符进行分组时。使用MAX进行TSQL更新()

SQL Fiddle什么我试图用试验&做失败代码:(。

SQL Fiddle什么,我希望它看起来像更新之后。

你能借我会大大任何援助据我所知max()只是列的最大数量,所以如何在更新语句中排序而不会破坏它?

回答

9

为什么要将这些冗余数据存储在单独的列中,何时你可以随时计算它吗?你知道你会哈随时更新触发器或其他机制,随时更新表中的任何一行,对吧?

UPDATE h 
    SET LAST_REVISION = s.lr 
    FROM dbo.PO_HEADER AS h 
    INNER JOIN 
    (
    SELECT PO_NUMBER, lr = MAX(REVISION_NUMBER) 
    FROM dbo.PO_HEADER 
    GROUP BY PO_NUMBER 
) AS s 
    ON h.PO_NUMBER = s.PO_NUMBER; 
+0

+1谢谢你,只是帮助我,大大降低了我的SPROC的复杂性,使它更容易阅读! –