Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как отранжировать в виде / 5 сообщений из 5, страница 1 из 1
09.10.2018, 17:49
    #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
09.10.2018, 17:51
    #39715067
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отранжировать в виде
minya13_85,

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

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

NTILE надо задать аргумент в скобках, но я не знаю сколько.
...
Рейтинг: 0 / 0
09.10.2018, 18:08
    #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
09.10.2018, 18:10
    #39715082
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отранжировать в виде
minya13_85,

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

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


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