powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Специальная нумерацию строк T-SQL
11 сообщений из 11, страница 1 из 1
Специальная нумерацию строк T-SQL
    #39784801
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача следующая, есть таблица с огромным кол-вом строк. Мне нужно написать View, где строчки разбиваются на группы по 5 строк. т.е создать столбец, где будет нумерация от 1 до N. И каждые 5 строк будут иметь уникальный номер. Пример того, что нужно на рисунке

...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39784804
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msleg,

FLOOR((N-1)/5.)+1
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39784812
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msleg,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @batch_size int = 3;

with 
  t(id) as 
    (
      select * 
        from (values (1),(2),(3),(4),(5),(6),
                     (7),(8),(9),(10),(11),(12),
                     (13),(14),(15)
             ) as v(id)
    )
--
select id
     , (row_number()over(order by (select null)) - 1)/ @batch_size + 1     
  from t
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39784853
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, спасибо за подсказку. Сделал следующим образом

Код: sql
1.
2.
3.
4.
SELECT 
  FLOOR((ROW_NUMBER() over (order by [MessageID])-1)/5.)+1 
  ,[MessageID]      
FROM [LotInfo]
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39787547
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msleg,

Нашел еще интересную информацию. Чтобы не забыть про ранжирующие функции
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39787548
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39789013
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mslegTaPaK, спасибо за подсказку. Сделал следующим образом

Код: sql
1.
2.
3.
4.
SELECT 
  FLOOR((ROW_NUMBER() over (order by [MessageID])-1)/5.)+1 
  ,[MessageID]      
FROM [LotInfo]


На самом деле это ОЧЕНЬ плохое решение, т.к. для того, чтобы построить номер, Вы предварительно сортируете всю выборку, и хорошо, если по MessageID есть индекс.
Делать нужно так, как предложил TaPaK, или Щукина Анна.

Я бы сделал так, как предложила Щукина Анна, т.к. нельзя полагаться на то, что автоинкременты идут без разрывов.
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39789062
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster,

Код: sql
1.
2.
3.
row_number() over(order by (select null))

row_number() over(order by id)



Можете пояснить, почему в первом случае "разрывы в автоинкременте" не влияют на результат, а во втором случае влияют?
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39789103
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-l,

В приведенных вами сэмплах разницы нет, насколько я помню. А вот ТаРаК нигде не упоминает row_number(), у него там только некий загадочный N. Если истолковать это как Id, а новички так обычно и делают, то как раз пропуски в нумерации и доставят.
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39789141
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael,

Вопрос был uaggster.

ТС уже пронумеровал свою последовательность от 1 до N каким-то способом. ТaPaK предложил формулу для нумерации групп, без всяких намеков на реализацию. На основании этой формулы Щукина Анна и ТС дали решения.

uaggster сказал, что решение ТС " ОЧЕНЬ плохое". Поэтому я и спросил uaggsterа о влиянии автоинкремента. На самом деле, в этих двух решениях автоинкремент и пропуски в нем никак не влияют на результат. В этом плане они идентичны, так как они оба перенумеровывают уже пронумерованное.

В первом же варианте есть проблема воспроизводимости результата, так как порядок нумерации строк произвольный.

Поэтому не корректно говорить, что второй вариант очень плохой.
...
Рейтинг: 0 / 0
Специальная нумерацию строк T-SQL
    #39789269
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterт.к. для того, чтобы построить номер, Вы предварительно сортируете всю выборкуРазве сортируется? По моему, нет, именно потому, что по MessageID есть индекс.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Специальная нумерацию строк T-SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]