@cicatrix
было бы большой ошибкой думать

Как пронумеровать блоки записей по N строк в таблице?

Имеется таблица, в которой необходимо назначить порядковый номер на каждую группу из N строк.
То есть, первым N записям назначается номер 1, записям с N + 1 до 2N - номер 2, и т. д.
Пока решил вопрос в тупую: сделал хранимую процедуру и в цикле перебираю все записи и назначаю номера, затем update на этот набор и переход к следующей группе

Есть ли более простой / эффективный способ?
  • Вопрос задан
  • 652 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Не проверял на MS SQL Server'е, но он вроде умеет в CTE и оконные функции:
with t as (
    select
      id,
      ((row_number() over (order by id) - 1) / N) + 1 as group_id
    from some_table
)
update some_table set
  some_talbe.group_id = t.group_id
from t
where some_table.id = t.id;
Ответ написан
@pool
declare @i int
set @i=-1
update [tbl] set group_number=floor(@i/5),@i=@i+1
select * from [tbl];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы