You could do something like this:DECLARE @a TABLE ( OrderId INT, Col CHAR(1) )INSERT @a ( OrderId, Col )SELECT 1, 'A' UNIONSELECT 2, 'B' UNIONSELECT 3, 'C' UNIONSELECT 4, 'D' UNIONSELECT 5, 'E' UNIONSELECT 6, 'F'DECLARE @Order INT, @Col CHAR(1)SELECT @Order = 4, @Col = 'A'UPDATE @aSET OrderId = rnFROM @a a JOIN ( SELECT ROW_NUMBER() OVER ( ORDER BY OrderId, NewInd ) AS rn, Col FROM ( SELECT OrderId, NULL AS NewInd, Col FROM @a WHERE Col <> @Col UNION SELECT @Order, 1, @Col ) a ) b ON a.Col = b.ColSELECT * FROM @aORDER BY OrderId