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

Откуда: Москва
Сообщений: 1139
Никак не могу отсортировать данные внутри группы.

Есть табличка:
CREATE TABLE [dbo].[test](
	[Column1] [int] NULL,
	[Column2] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (10, 5)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (10, 6)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (10, 7)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (10, 8)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (20, 4)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (20, 5)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (20, 6)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (20, 7)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (20, 8)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 1)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 2)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 3)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 4)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 5)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 6)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 7)
INSERT [dbo].[test] ([Column1], [Column2]) VALUES (30, 8)



Есть запрос:

SELECT Column1, Column2, 
		DENSE_RANK() OVER (ORDER BY Column1) AS [Номер группы]
FROM  test


Нужно еще отсортировать записи внутри группы, чтобы результат был как на картинке.

К сообщению приложен файл. Размер - 48Kb
9 фев 12, 17:09    [12064522]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка, помогите пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
А так?
SELECT Column1, Column2, 
		DENSE_RANK() OVER (ORDER BY Column1) AS [Номер группы]
FROM  test
ORDER BY ROW_NUMBER()OVER(PARTITION BY Column1 ORDER BY Column2);
9 фев 12, 17:13    [12064556]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка, помогите пожалуйста  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Gena928, оберните в подзапрос, а далее ROW_NUMBER OVER (PARTITION BY [Номер группы] ORDER BY ([Column1], [Column2]) [Место в группе]
9 фев 12, 17:14    [12064558]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка, помогите пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
А так?
SELECT Column1, Column2, 
 [Номер группы]=DENSE_RANK() OVER (ORDER BY Column1),
 [Место в группе]=ROW_NUMBER()OVER(PARTITION BY Column1 ORDER BY Column2)
FROM  test
ORDER BY 3,4;
9 фев 12, 17:16    [12064589]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка, помогите пожалуйста  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
iap,
спасибо работает.
9 фев 12, 17:20    [12064631]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка, помогите пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Gena928
iap,
спасибо работает.
Совсмем правильно так:
SELECT Column1, Column2, 
 [Номер группы]=DENSE_RANK() OVER (ORDER BY Column1),
 [Место в группе]=ROW_NUMBER()OVER(PARTITION BY Column1 ORDER BY Column2)
FROM  test
ORDER BY [Номер группы],[Место в группе];
не закладываясь на номера полей в SELECTе
9 фев 12, 17:23    [12064656]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить