Я ненавижу циклы while и люблю избегать их, когда это возможно.
Я столкнулся со сценарием, для решения которого может потребоваться цикл while.Тем не менее, позвольте мне спросить моих друзей в Интернете, прежде чем я закодирую цикл while.
Представьте, что у вас есть следующие данные ...
declare @tv_mytable table(recnum int identity(1,1) primary key, widgettype char(3), issecondarywidget bit default(0), priority int)
insert @tv_mytable(widgettype, issecondarywidget) values('BAT', 0)
insert @tv_mytable(widgettype, issecondarywidget) values('BAT', 0)
insert @tv_mytable(widgettype, issecondarywidget) values('ANT', 0)
insert @tv_mytable(widgettype, issecondarywidget) values('ANT', 0)
insert @tv_mytable(widgettype, issecondarywidget) values('ANT', 1)
insert @tv_mytable(widgettype, issecondarywidget) values('ANT', 1)
insert @tv_mytable(widgettype, issecondarywidget) values('BAT', 1)
insert @tv_mytable(widgettype, issecondarywidget) values('BAT', 1)
Вы попадаете с этим ...
recnum widgettype issecondarywidget priority
----------- ---------- ----------------- -----------
1 BAT 0 NULL
2 BAT 0 NULL
3 ANT 0 NULL
4 ANT 0 NULL
5 ANT 1 NULL
6 ANT 1 NULL
7 BAT 1 NULL
8 BAT 1 NULL
Я хочу обновить столбец приоритетовтак что он начинается с 1, и каждый раз, когда виджет или issecondarywidget изменяют значение, приоритет увеличивается на 1.
Данные будут выглядеть следующим образом ...
recnum widgettype issecondarywidget priority
----------- ---------- ----------------- -----------
1 BAT 0 1
2 BAT 0 1
3 ANT 0 2
4 ANT 0 2
5 ANT 1 3
6 ANT 1 3
7 BAT 1 4
8 BAT 1 4
Спасибо