Предполагается, что ваш стол выглядит так:
--drop table CustomCatalogForm
create table CustomCatalogForm
(
CustomCatalogFormId int not null
,DisplaySeq char(1) not null
)
insert CustomCatalogForm (CustomCatalogFormId, DisplaySeq)
values (1,'A')
insert CustomCatalogForm (CustomCatalogFormId, DisplaySeq)
values (2,'B')
insert CustomCatalogForm (CustomCatalogFormId, DisplaySeq)
values (3,'C')
insert CustomCatalogForm (CustomCatalogFormId, DisplaySeq)
values (4,'D')
Тогда это будет сделано для любых двух заданных значений (я проверял с 2 и 3):
select * from CustomCatalogForm
-------------------------------
DECLARE
@Item1 int
,@Item2 int
SET @Item1 = 2
SET @Item2 = 3
UPDATE CustomCatalogForm
set DisplaySeq = ccf2.DisplaySeq
from CustomCatalogForm ccf
inner join (select CustomCatalogFormId, DisplaySeq
from CustomCatalogForm
where CustomCatalogFormId = @Item1
or CustomCatalogFormId = @Item2) ccf2
on ccf.CustomCatalogFormId <> ccf2.CustomCatalogFormId
where ccf.CustomCatalogFormId = @Item1
or ccf.CustomCatalogFormId = @Item2
-------------------------------
select * from CustomCatalogForm
Хитрость заключается в том, чтобы получить обе строки только по обе стороны от соединения, и объединить в НЕ РАВНО.