Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Выборка с Нумерацией строк по 200 записей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Jaffar
Опять ругань по пустякам.

declare @Num int
-------------------
set @Num = 7 -- здесь 200 или сколько хочешь
-------------------
select o.object_ID, o.Name,
IsNULL(NULLIf(row_number() over(order by o.object_ID asc) % @Num, 0), @Num) NN 
from  sys.objects o with(nolock)
order by o.object_ID asc

а этот цирк с IsNULL(NULLIf что бы +1 не сделать?
13 фев 18, 14:15    [21187839]     Ответить | Цитировать Сообщить модератору
 Re: Выборка с Нумерацией строк по 200 записей  [new]
Jaffar
Member

Откуда:
Сообщений: 633
TaPaK,

НО, тем не менее - ЭТО замена 0 на @NUM
Чтобы было понятнее приведу простой пример(вдруг кто-то не поймет):
если например @NUM = 7
то row_number()%@NUM - (на всякий случай % - это остаток от деления)
будет =
NN %
-----------
1 1
2 2
3 3
4 4
5 5
6 6
7 0 - вот тут то мы и меняем 0 на @NUM.
8 1
9 2
и т.д.

какие варианты замены у нас есть?
1.IsNULL(NULLIF()) - не_нужное нам число мы меняем на NULL а потом NULL меняем на нужное число.
case when A = B then C else A end - можно и так но так длиннее запись, а с учетом того,
что А - это row_number() over(order by m.ID) - это прийдется повторять 2 раза.

Но вы наверное предлагаете вот такой вариант:
select ....
((row_number() over(order by o.object_ID asc)-1) % @Num  ) + 1 NN2
.....

он действительно короче - но КМК, НЕ_ПОНЯТНЕЕ.
14 фев 18, 08:32    [21189692]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить