DECLARE @TestOrders TABLE ([Order] int, OrderID int IDENTITY) 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 [OrderID]>>Hi everybody,
>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] >>