Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сложная (?) сортировка / 5 сообщений из 5, страница 1 из 1
07.10.2002, 19:11:14
    #32056139
boris29k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная (?) сортировка
Имею таблицу

DATE | NAME_OF_VALUE | VALUE
27.03 | TEST_1 | 60
27.03 | TEST_2 | 30
27.03 | TEST_3 | 40
25.04 | TEST_1 | 150
25.04 | TEST_3 | 270
28.04 | TEST_1 | 15
хочу получть recordset где для каждой даты стоят отсортированные ASC по VALUE NAME_OF_VALUEs с порядковым номером сортировки,типа

DATE | NAME_OF_VALUE | RANG
27.03 | TEST_2 | 1
27.03 | TEST_3 | 2
27.03 | TEST_1 | 3
25.04 | TEST_1 | 1
25.04 | TEST_3 | 2
28.04 | TEST_1 | 1
без курсоров и временных таблиц.
Отсутствует понимание -как:-)
...
Рейтинг: 0 / 0
07.10.2002, 19:53:14
    #32056153
Stork
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная (?) сортировка
Код: plaintext
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.
create table #tmp
(
	[date] datetime not null,
	name_of_value nvarchar( 100 ) not null,
	value int not null
)

 /*
Считаем, что комбинация [date] и [name_of_value] уникальна,
иначе полученная выборка не будет читаться (не будет понятно,
какой именно из "тестов" стоит в этой дате на этом месте)
*/ 
alter table #tmp add constraint unq_tmp unique ([date],name_of_value)

insert into #tmp values ('20000327','TEST_1', 60 )
insert into #tmp values ('20000327','TEST_2', 30 )
insert into #tmp values ('20000327','TEST_3', 40 )
insert into #tmp values ('20000425','TEST_1', 150 )
insert into #tmp values ('20000425','TEST_3', 270 )
insert into #tmp values ('20000428','TEST_1', 15 )

Select
	[date],
	name_of_value,
	rang
From
	(
	Select
		convert(varchar( 5 ),t.[date], 104 ) [date],
		t.name_of_value name_of_value,
		Count(*) rang,
		t.[date] dateorder
	From
		#tmp t
		inner join #tmp tt
			on t.[date]=tt.[date] 
			and t.value>=tt.value
	Group By
		t.[date],
		t.name_of_value
	) result
Order By
	result.dateorder,
	result.rang

drop table #tmp


С уважением,
Александр Степанов
...
Рейтинг: 0 / 0
07.10.2002, 20:22:36
    #32056160
boris29k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная (?) сортировка
Элегантно и работает,
спасибо большое!
...
Рейтинг: 0 / 0
07.10.2002, 20:45:22
    #32056162
Alexander_Yudakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная (?) сортировка
Код: plaintext
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.
If Object_ID('tempdb..#MyTable') is not null
 Drop table #MyTable
go

Create table #MyTable
(
 Date datetime not null,
 Name_of_value varchar( 100 ) not null,
 Value int
)
go

Insert into #MyTable values('2002-03-27', 'TEST_1',  60 )
Insert into #MyTable values('2002-03-27', 'TEST_2',  30 )
Insert into #MyTable values('2002-03-27', 'TEST_3',  40 )
Insert into #MyTable values('2002-04-25', 'TEST_1',  150 )
Insert into #MyTable values('2002-04-25', 'TEST_3',  270 )
Insert into #MyTable values('2002-04-28', 'TEST_1',  15 )
go

Select T1.Date, T1.Name_of_value, Count(*) Range
from #MyTable T1
join #MyTable T2
on ((T1.Date = T2.Date) and (T1.Value >= T2.Value))
group by T1.Date, T1.Name_of_value
order by T1.Date, Range
...
Рейтинг: 0 / 0
07.10.2002, 20:46:30
    #32056163
Alexander_Yudakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложная (?) сортировка
Извиняюсь. Забыл F5 нажать. Ответ оказывается уже есть.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сложная (?) сортировка / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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