ギャップなしで再シーケンスする必要があるアイテムのリストがあります。それは次のように始まります:
ID Sequence
123 1
125 2
155 3
158 4
165 6
170 9
最終的には(シーケンス6が5に変更され、シーケンス9が6に変更されることに注意してください)
ID Sequence
123 1
125 2
155 3
158 4
165 5
170 6
この更新ステートメントを使用してみました
UPDATE tblA
SET tblA.Sequence = temp.Sequence
FROM ( SELECT id ,
ROW_NUMBER() OVER ( ORDER BY Sequence, ID ) AS Sequence
FROM dbo.tblA
) AS temp
しかし、私はただで終わる...
ID Sequence
123 1
125 1
155 1
158 6
165 6
170 6
更新からselectステートメントを引き出すと、正しい結果が得られます。次のようなものに変更します
UPDATE tblA
SET tblA.Sequence = temp.NewSequence
FROM ( SELECT id ,
ROW_NUMBER() OVER ( PARTITION BY id ORDER BY Sequence, id )
AS NewSequence
FROM dbo.tblA
) AS temp
結果を生成します
ID Sequence
123 1
125 1
155 1
158 1
165 1
170 1
私は何が間違っているのですか?