Как отобразить целочисленный столбец данной таблицы в виде автоматически увеличивающегося ряда, начиная с 1, для внешнего пользователя? - PullRequest
1 голос
/ 10 июля 2019

Я нахожусь в процессе написания полнофункционального приложения, которое выступает в качестве менеджера задач / проекта. Он действует как большая таблица с функцией перетаскивания, которая позволяет высшему руководству перераспределять приоритеты задач / проектов. Вот что видит высшее руководство.

 -----------------------------------------
|Priority| Task                 | Resource|
 -----------------------------------------
|    1   | Write some code      | Arya S. |
 -----------------------------------------
|    2   | Write a spec.        | Bran S. |
 -----------------------------------------
|    3   | Write some code      | Bran S. |
 -----------------------------------------

... и так далее для более 100 заданий. Ресурс, для которого назначена задача, также может войти в программу и видеть только свои задачи. Например, если Бран входит в систему:

 -----------------------------------------
|Priority| Task                 | Resource|
 -----------------------------------------
|    2   | Write a spec.        | Bran S. |
 -----------------------------------------
|    3   | Write some code      | Bran S. |
 -----------------------------------------

Столбец приоритета - это столбец в нашей базе данных sql-сервера. Есть ли способ использовать SQL для повторной настройки приоритета (либо через код JAVA среднего уровня, либо через представление SQL) так, чтобы «Bran S.» видит свои приоритеты, начиная с 1? Желаемый конечный продукт:

 -----------------------------------------
|Priority| Task                 | Resource|
 -----------------------------------------
|    1   | Write a spec.        | Bran S. |
 -----------------------------------------
|    2   | Write some code      | Bran S. |
 -----------------------------------------

Я бы предпочел не использовать JQuery / DOM-манипуляции, так как это кажется неэффективным и грязным, и в нем много движущихся частей. Любые предложения будут с благодарностью!

Ответы [ 2 ]

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

Используйте функцию row_number () в процедуре или команду выбора, которую вы используете.

сценарий

        create table #tempTable
        (
        Priority int identity(1,1),
            Task    varchar(100),
            Resource varchar(100)
            )

        insert into  #tempTable
        select    'Write some code' ,'Arya S.' UNION 
        select  'Write a spec. '  ,'Bran S.' union 
        select 'Write some code ' ,'Bran S.'

        select * from #tempTable

        select ROW_NUMBER() over (order by Priority),Task,  Resource
        from    #tempTable

        delete from #tempTable
        where Priority = 1

        select  ROW_NUMBER() over (order by Priority) Priority,Task,    Resource
        from    #tempTable

        drop table #tempTable
0 голосов
/ 10 июля 2019

В SQL Server здесь может быть полезна Row_Number ().

* ** 1003 тысяча два * Пример
 Select [Priority] = row_number() over (partition by [resouce] order by [Priority])
       ,[Task]
       ,[Resouce]
  From  YourTable

Примечание: Если у вас есть конкурирующие приоритеты, вы можете заменить row_number() на dense_rank()

Чтобы обновить таблицу ...

;with cte as (
 Select *
       ,[NewPriority] = row_number() over (partition by [resouce] order by [Priority])
  From  YourTable
)
Update cte set [Priority]=[NewPriority]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...