Как SQL сортировать и обновить "SortKey" после удаления некоторых "sortkey" в "Sortkey" - PullRequest
0 голосов
/ 07 июля 2019

если «simon» в SortKey «3» и «josef» в SortKey «5» идут до финиша и выхода на пенсию, то идентификационный номер 3, 5 остается.

но сортировка удалена

где я хочу сделать перестройку в SortKey с новыми участниками, оставшимися в работе

Название таблицы: TblMaster Пример Поля:

-----------------------
ID    SortKey   Name
-----------------------
1-       1      john
2-       2      steve
3-       3      simon
4-       4      onil
5-       5      josef
6-       6      mohamed
7-       7      ebraham
-----------------------

нужно изменить как

-----------------------
ID      SortKey     Name
-----------------------
1-       1      john
2-       2      steve
3-              simon
4-       3      onil
5-              josef
6-       4      mohamed
7-       5      ebraham
-----------------------

мы говорим о 5000 сотрудников как можно обновить все SortKey с новыми отсортированными

спасибо за помощь

1 Ответ

0 голосов
/ 07 июля 2019

Возможно, один подход - это два обновления. Сначала мы NULL соответствующие SortKey's, а затем мы создаем новый ключ через Row_Number() (исключая NULL SortKey's)

Пример

Update YourTable set SortKey=null where ID in (3,5)  -- Or whatever desired condition

;with cte as (
     Select *
            ,NewKey = Row_Number() over (Order By SortKey) 
      From  YourTable
      Where SortKey is not null
)
Update cte Set SortKey=NewKey

Обновленная таблица

ID  SortKey Name
1   1       john
2   2       steve
3   NULL    simon
4   3       onil
5   NULL    josef
6   4       mohamed
7   5       ebraham
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...