3

列を最大値に更新しようとしていますが、適切な識別子でグループ化されている場合のみです。

トライアルと失敗したコードでやろうとしていることのSQL Fiddle :(。

更新後にどのように見せたいかについてのSQL Fiddle 。

あなたが私に貸してくれるどんな援助も大歓迎です。私が理解しているように、 max() は列の最大数を取るだけなので、更新ステートメントを破壊せずにソートするにはどうすればよいですか?

4

1 に答える 1

9

実行時にいつでも計算できるのに、なぜこの冗長データを別の列に保存したいのですか?テーブル内の任意の1つの行が更新されるたびに、トリガーまたはその他のメカニズムを使用してこれを最新の状態に保つ必要があることをご存知ですか?

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 に答える