Обновить оператор для увеличения значения столбца - PullRequest
1 голос
/ 22 апреля 2020

Пожалуйста, рассмотрите следующую настройку

Control Group   Sequence
Cont1   Group1  0
Cont2   Group1  1
Cont3   Group1  2
Cont3   Group2  0
Cont2   Group2  1
Cont1   Group2  2

последовательность приращения с +1 для последовательности> = последовательность cont2 и для соответствующей группы

Результат должен быть

Control Group   Sequence
Cont1   Group1  0
Cont2   Group1  2
Cont3   Group1  3
Cont3   Group2  0
Cont2   Group2  2
Cont1   Group2  3

Может ли кто-нибудь помочь мне построить Sql, чтобы получить результат выше?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Я думаю, что это то, что вы хотите:

update setup
    set sequence = sequence + 1
    where sequence >= (select s2.sequence
                       from setup s2
                       where s2.group = s.group and s2.control = 'Cont2'
                      );
0 голосов
/ 23 апреля 2020

Вы также можете попробовать альтернативное решение, используя OUTER APPLY:

UPDATE s
    SET s.[Sequence] = s.[Sequence]+1
FROM setup s
OUTER APPLY
(
    SELECT s2.[Sequence]
    FROM setup s2
    WHERE s2.[Group] = s.[Group] AND s2.[Control] = 'Cont2'
)_
WHERE s.[Sequence] >= _.[Sequence]
...