Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 можно ли задать условие для нумерации строк (row_number)  [new]
kolyady
Member

Откуда:
Сообщений: 137
Ситуация следующая, у меня есть результирующий набор данных где в колонке может быть null, мне нужно пронумеровать только те строки где нет null.
Данные нужны все (и с нулами и без) а пронумировать надо только те где нет нулов при чем с партитион по колонке kod тобиш
ROW_NUMBER() over(partition by kodr order by trabl_kolumn)
выдает такой результат:

n/n kod sum1 sum2 trabl_kolumn
1 128015107 0 -72,36216 2 NULL
2 128015107 -45,92214 0 2 1276415634
1 128017522 0 0 2 1433121713
2 128017522 13,9158 0 2 1505105387

а мне нужно чтобы выдало так:
n/n kod sum1 sum2 trabl_kolumn
0 128015107 0 -72,36216 2 NULL
1 128015107 -45,92214 0 2 1276415634
1 128017522 0 0 2 1433121713
2 128017522 13,9158 0 2 1505105387

вобщем можно ли partition by указать что групировать и нумеровать только строки которые в колонке trabl_kolumn не равны null?
14 авг 18, 12:09    [21641651]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

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

можно. используйте CASE
14 авг 18, 12:10    [21641654]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
kolyady
Member

Откуда:
Сообщений: 137
Щукина Анна,

можно с примером?
14 авг 18, 12:12    [21641657]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

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

тестовые данные в удобоиспользуемом виде (with as, create table ... insert, etc.) приведите...
и, желательно, требуемый результат на примере этих тестовых данных...
14 авг 18, 12:13    [21641661]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
kolyady,

SUM(CASE WHEN trabl_kolumn IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY kod ORDER BY trabl_kolumn)
14 авг 18, 12:14    [21641662]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

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

а чего тогда не DENSE_RANK() ?
14 авг 18, 12:16    [21641666]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Щукина Анна,

хотя, без NULLS FIRST | LAST всё одно - не взлетит...
14 авг 18, 12:18    [21641672]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Щукина Анна
TaPaK,

а чего тогда не DENSE_RANK() ?

даже если бы можно было убрать NULL из ранжирования, всё равно это вообще не в ту сторону
14 авг 18, 12:20    [21641682]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
kolyady
Member

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

Спасибо :)
SUM(CASE WHEN trabl_kolumn IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY kod ORDER BY trabl_kolumn)
То то нужно
тему можно закрывать
14 авг 18, 12:44    [21641732]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
TaPaK
даже если бы можно было убрать NULL из ранжирования, всё равно это вообще не в ту сторону
Ещё раз - без NULLS LAST - не взлетит (хотя, можно и без него, но тогда решение будет более громоздкое).

В целом, имелось ввиду примерно что-то следующее...
14 авг 18, 14:03    [21641863]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Щукина Анна,

и чем тут DENSE_RANK от ROW_NUMBER будет отличаться?
14 авг 18, 14:08    [21641873]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

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

и чем тут DENSE_RANK от ROW_NUMBER будет отличаться?
тут не будет отличия между вашим решением и решением на DENSE_RANK.
А вот между вашим решением и исходной трактовкой от автора на ROW_NUMBER-е - разница существенна, в особенности если допускаются дубликаты NOT NULL-ных значений по trabl_kolumn в пределах одного kod...
14 авг 18, 18:19    [21642291]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Щукина Анна
TaPaK
Щукина Анна,

и чем тут DENSE_RANK от ROW_NUMBER будет отличаться?
тут не будет отличия между вашим решением и решением на DENSE_RANK.
А вот между вашим решением и исходной трактовкой от автора на ROW_NUMBER-е - разница существенна, в особенности если допускаются дубликаты NOT NULL-ных значений по trabl_kolumn в пределах одного kod...

Разница существенная из-за того что решение тс не правильное и он это озвучивает?
14 авг 18, 18:42    [21642308]     Ответить | Цитировать Сообщить модератору
 Re: можно ли задать условие для нумерации строк (row_number)  [new]
Щукина Анна
Member

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

автор пытается перенумеровать строки.
ваше же решение, как и решение на DENSE_RANK - не нумерует строки, а расставляет им ранки.
как по мне - это принципиально разные вещи.
но моё мнение не обязано совпадать с вашим. ровно как и ваше - с моим...
14 авг 18, 18:54    [21642320]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить