powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как отранжировать в виде
5 сообщений из 5, страница 1 из 1
Как отранжировать в виде
    #39715064
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
DECLARE @T TABLE (id int,[Name] VARCHAR(50))
INSERT INTO @T 
SELECT 1, 'AA'
UNION ALL 
SELECT 2,'BB'
UNION ALL 
SELECT 2,'CC'
UNION ALL 
SELECT 2,'BBD'
UNION ALL 
SELECT 2,'dfdf'
UNION ALL 
SELECT 2,'aaaz'
UNION ALL 
SELECT 2,'mgdf'
UNION ALL 
SELECT 2,'ytrr'
UNION ALL 
SELECT 3,'dcvxc'
UNION ALL 
SELECT 3,'bhhjg'
UNION ALL
SELECT 3, 'AA2'
UNION ALL 
SELECT 3,'BB2'
UNION ALL 
SELECT 3,'CC2'
UNION ALL 
SELECT 3,'BBD2'
UNION ALL 
SELECT 3,'dfdf2'
UNION ALL 
SELECT 3,'aaaz2'
UNION ALL 
SELECT 3,'mgdf2'
UNION ALL 
SELECT 3,'ytrr2'
UNION ALL 
SELECT 3,'dcvxc2'
UNION ALL 
SELECT 3,'bhhjg2'
UNION ALL 
SELECT 3,'bhhjg3'
UNION ALL 
SELECT 3,'bhhjg5'

SELECT * FROM @T



Как отранжировать таким образом, чтобы делил по 6, в рамках одного id, но продолжая нумерацию? Как правильно организовать dense_rank ?



rangid Name11 AA22 BB22 CC22 BBD22 dfdf22 aaaz22 mgdf32 ytrr43 dcvxc43 bhhjg43 AA243 BB243 CC243 BBD253 dfdf253 aaaz253 mgdf253 ytrr253 dcvxc253 bhhjg263 bhhjg363 bhhjg5
...
Рейтинг: 0 / 0
Как отранжировать в виде
    #39715067
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minya13_85,

Может вам не DENSE_RANK, а NTILE нужен?
...
Рейтинг: 0 / 0
Как отранжировать в виде
    #39715072
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegaelminya13_85,

Может вам не DENSE_RANK, а NTILE нужен?

NTILE надо задать аргумент в скобках, но я не знаю сколько.
...
Рейтинг: 0 / 0
Как отранжировать в виде
    #39715080
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minya13_85,

В "два этажа" получается, но в оптимальности не уверен
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;with cte as (
	SELECT 
		* 
		,fl =row_number()over(order by id)-row_number()over(partition by id order by id)   
	FROM @T),
cte1 as (
	select
		*
		,r=(row_number()over(partition by id, fl order by id, fl)-1) / 6
	from cte)

select 
	 id 
	,[Name] 
	,rang	=dense_rank()over(order by id, r)  
from cte1


idNamerang1AA12BB22CC22BBD22dfdf22aaaz22mgdf22ytrr33dcvxc43bhhjg43AA243BB243CC243BBD243dfdf253aaaz253mgdf253ytrr253dcvxc253bhhjg253bhhjg363bhhjg56
...
Рейтинг: 0 / 0
Как отранжировать в виде
    #39715082
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minya13_85,

А, все, понял. Зря вы так пример подобрали, что последнее значение ранга совпадает с размером окна - это запутывает.

А практический смысл у задачи есть, или так, мозги размять? А то, может, там еще какие зависимости имеются. Так-то прям в лоб - это очень мудрено будет, если будет, и может даже проигрывать курсору.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как отранжировать в виде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]