SQL установить поле индекса на основе поля даты - PullRequest
2 голосов
/ 08 сентября 2011

Я надеюсь добиться чего-то похожего на SQL-запрос для заполнения поля индекса на основе групп .

Единственное отличие состоит в том, что я хочу установить индексное поле на основе существующего поля даты.

Моя структура таблицы:

Product
-------
Group
Name
DateCreated
DisplayIndex

Поэтому мне нужно сгруппировать по «Группе» и обновить DisplayIndex элементов в этой группе на основе даты DateCreated.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011
;with C as
(
  select DisplayIndex,
         row_number() over (partition by [Group] order by DateCreated desc) as rn
  from Product 
)
update C set
  DisplayIndex = rn
2 голосов
/ 08 сентября 2011

Вы можете использовать row_number для нумерации строк в Group:

update  p
set     DisplayIndex = pn.rn
from    Product p
join    (
        select  row_number() over (partition by [Group] 
                                   order by DateCreated desc) as rn
        ,       *
        from    Product
        ) as pn
on      p.[Group] = pn.[Group]
        and p.[Name] = pn.[Name]

Пример для данных SE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...