Ravikumarkkp Ответов: 2

Как создать каждые 10 строк, один groupid в SQL server


у меня есть несколько строк со столбцами в таблице, я хочу добавить каждые 10 строк один groupid.

Например - первые 10 строк группы=1,далее 10 рядов группы 2 ,следующие 10 рядов группы=3 и т. д.

Пожалуйста, помогите мне решить эту проблему СРОЧНО.
заранее спасибо.

Что я уже пробовал:

я не знаю, что мне нужно делать.

ZurdoDev

Я верю, что ROWNUMBER и partition помогут вам.

Afzaal Ahmad Zeeshan

Вы хотите сделать это в физических данных или в представлении или что-то еще?

Richard MacCutchan

Пожалуйста, не используйте "как можно скорее" или "срочно" в ваших вопросах. Люди здесь отвечают на вопросы в свое время и бесплатно для вас.

2 Ответов

Рейтинг:
9

0x01AA

Пока NTILE упомянутый в ответе 1has некоторые недостатки я бы попробовал что-то вроде этого:

SELECT 
(ROW_NUMBER() OVER (ORDER BY Id)-1) / 10 + 1 AS GroupId
      ,[Id]
      , ....
FROM TBL


Рейтинг:
1

Kornfeld Eliyahu Peter

Ищите ранжирующие функции SQL...
Этот, вероятно, подойдет: NTILE (Transact-SQL) - SQL Server | Microsoft Docs[^]


0x01AA

Функция +5Nice, но, к сожалению, первая группа будет скорректирована в том случае, если "нет строк % N" не равно нулю.

Kornfeld Eliyahu Peter

Да. Я не был уверен насчет НТИЛЯ... это было предложение из моей головы... В чем я был уверен, так это в функциях ранжирования... :-)