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

Откуда:
Сообщений: 442
допустим есть таблица
GroupID KeyID
D 1
D 2
A 3
A 4
A 5
F 6
C 7
C 8


Нужно пронумеровать GroupID c сортировкой по столбцу KeyID, т.е. получить таблицу
1 1
1 2
2 3
2 4
2 5
3 6
4 7
4 8

Понятно что можно сделать через вложенный запрос с Count(*) where KeyID <= CurrentKeyID
но хочется все-же как-то оконными функциями обойтись.

Есть идеи? иди только вложенный запрос?
27 янв 16, 15:50    [18736278]     Ответить | Цитировать Сообщить модератору
 Re: Возможен ли DENSE_RANK() с сортировкой по другому столбцу?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
пока только с разрывами удалось пронумеровать,
first_value(KeyID) over( partition by GroupID order by KeyID) GroupNumber,
27 янв 16, 15:53    [18736297]     Ответить | Цитировать Сообщить модератору
 Re: Возможен ли DENSE_RANK() с сортировкой по другому столбцу?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
WITH
 T(GroupID,KeyID)AS
 (
  SELECT * FROM(VALUES
   ('D',1)
  ,('D',2)
  ,('A',3)
  ,('A',4)
  ,('A',5)
  ,('F',6)
  ,('C',7)
  ,('C',8)
  )T(GroupID,KeyID)
 )
,T1 AS(SELECT M=MIN(KeyID)OVER(PARTITION BY GroupID),* FROM T)
SELECT GroupID=DENSE_RANK()OVER(ORDER BY M),KeyID FROM T1 ORDER BY KeyID;
27 янв 16, 16:01    [18736343]     Ответить | Цитировать Сообщить модератору
 Re: Возможен ли DENSE_RANK() с сортировкой по другому столбцу?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
BERSERC
first_value
А почему это версию сервера скрываете?
27 янв 16, 16:02    [18736346]     Ответить | Цитировать Сообщить модератору
 Re: Возможен ли DENSE_RANK() с сортировкой по другому столбцу?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
iap
BERSERC
first_value
А почему это версию сервера скрываете?


Спасибо, действительно CTE пошустре вложенного запроса будет ;)
27 янв 16, 16:08    [18736376]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить