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

Откуда:
Сообщений: 25
SELECT
groupId
,sortIndex
,DENSE_RANK() over(order by sortIndex) resultSortIndex
,DENSE_RANK() over(order by groupId) resultSortIndexByGroup
from (
select
22132135 groupId
,1 sortIndex
union all
select
3233 groupId
,2 sortIndex
union all
select
3233 groupId
,3 sortIndex
union all
select
3233 groupId
,4 sortIndex
union all
select
563465 groupId
,5 sortIndex
) t


Хотелось бы в соответствии с сортировкой по sortIndex по одинаковым groupId получить одинаковые значения номеров по возрастанию
В общем DENSE_RANK вроде позволяет такое сделать - поле resultSortIndexByGroup,но это не то что я хочу, т.к. не учитывается сортировка sortIndex.

Приложил картинку как хотелось бы получить итог

К сообщению приложен файл. Размер - 4Kb
31 июл 19, 10:01    [21938560]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пронумеровать записи, почти как DENSE_RANK  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174
Добавьте PARTITION BY GroupId.
31 июл 19, 10:35    [21938580]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пронумеровать записи, почти как DENSE_RANK  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174
Опс, поспешил...

Вы хотите получить странную сортировку. Задачу решит, например,

DENSE_RANK() over(order by ASCII(groupId)) resultSortIndexByGroup

или иное выражение, которое задаст требуемый порядок сортировки при нумерации групп.
31 июл 19, 10:43    [21938593]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пронумеровать записи, почти как DENSE_RANK  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20174


К сообщению приложен файл. Размер - 30Kb
31 июл 19, 10:45    [21938596]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пронумеровать записи, почти как DENSE_RANK  [new]
DevIgo
Member

Откуда:
Сообщений: 25
Akina
Опс, поспешил...

Вы хотите получить странную сортировку. Задачу решит, например,

DENSE_RANK() over(order by ASCII(groupId)) resultSortIndexByGroup

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

Не совсем то, что нужно, т.к. тут просто совпал результат ASCII нужно очередностью, но спасибо)
31 июл 19, 11:28    [21938661]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пронумеровать записи, почти как DENSE_RANK  [new]
DevIgo
Member

Откуда:
Сообщений: 25
Вот так получилось
select
groupId
,sortIndex
,DENSE_RANK() over(order by minSortIndex) resultSortIndex
from (
	SELECT
	groupId
	,sortIndex
	,min(sortIndex) over(partition by groupId order by sortIndex) minSortIndex
	from (
	select
	42132135 groupId
	,1 sortIndex
	union all
	select
	3233 groupId
	,2 sortIndex
	union all
	select
	3233 groupId
	,3 sortIndex
	union all
	select
	3233 groupId
	,4 sortIndex
	union all
	select
	563465 groupId
	,5 sortIndex
	) t
) t
order by sortIndex
31 июл 19, 11:29    [21938664]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить