使用MAX()进行TSQL更新

时间:2012-07-02 05:56:47

标签: sql sql-server-2008 tsql

我正在尝试将列更新为最大值,但仅在按适当的标识符分组时才会更新。

SQL Fiddle我试图用试用版和&代码失败:(。

SQL Fiddle我希望它在更新后看起来像。

您可以借给我的任何帮助将不胜感激。据我所知,max()只占用了列的最大数量,那么如何在不破坏它的情况下对更新语句进行排序呢?

1 个答案:

答案 0 :(得分: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;