DECLARE @TestOrders TABLE ([Order] int) DECLARE @NewOrders TABLE ([OldOrder] int, NewOrder int IDENTITY(1,1)) insert into @TestOrders values (1) insert into @TestOrders values (2) insert into @TestOrders values (3) insert into @TestOrders values (4) insert into @TestOrders values (5) insert into @TestOrders values (6) insert into @TestOrders values (7) insert into @TestOrders values (8) insert into @TestOrders values (9) declare @OriginalOrder int declare @NewOrder int set @OriginalOrder = 2 set @NewOrder = 5 INSERT INTO @NewOrders (OldOrder) SELECT [Order] FROM @TestOrders ORDER BY CASE WHEN [Order] = @OriginalOrder then @NewOrder WHEN [Order] < @NewOrder THEN [ORDER] ELSE [ORDER] +1 END UPDATE TestOrders SET [ORDER] = NewOrder.NewOrder FROM @TestOrders TestOrders INNER JOIN @NewOrders NewOrder ON TestOrders.[Order] = NewOrder.OldOrder select * from @TestOrders ORDER BY [Order]Please, next time when you give an example use table variables instead of real tables or temp tables :-)