3

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

SQL Fiddle用于我试图用试用和失败的代码做的事情:(。

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

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

4

1 回答 1

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;
于 2012-07-02T06:02:46.493 回答