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

Откуда:
Сообщений: 93
Доброго вечера всем.
Ни как не догадаюсь как решить проблему, есть таблица:

CREATE TABLE #PARTNER(id INT NOT NULL IDENTITY PRIMARY KEY, name VARCHAR(10), AGE INT, height INT)
INSERT INTO #PARTNER(name, AGE, height) VALUES ('A', 3, 1)
INSERT INTO #PARTNER(name, AGE, height) VALUES ('C', 21, 11)
INSERT INTO #PARTNER(name, AGE, height) VALUES ('Z', 12, 3)
INSERT INTO #PARTNER(name, AGE, height) VALUES ('B', 4, 5)

SELECT * FROM #PARTNER ORDER BY AGE

DROP TABLE #PARTNER


Как получить на выходе такой результат:(т.е сначала name выводится с сортировкой по AGE, а рядом тот же name с сортировкой по height)?
id name AGE name height
1 A 3 A 1
4 B 4 Z 3
3 Z 12 B 5
2 C 21 C 11
19 июл 13, 17:34    [14591176]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
ROW_NUMBER() + JOIN
19 июл 13, 17:41    [14591220]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Garisson, странная задача...

Ну как тот так:

;with a as (
	select * ,ROW_NUMBER() over (order by age) as rn
	  from #PARTNER)
	 ,b as (
	select * ,ROW_NUMBER() over (order by height) as rn
	from #PARTNER)
select a.id,a.name,a.AGE,b.name,b.height
from a
inner join b
	on a.rn = b.rn
order by a.rn
19 июл 13, 17:43    [14591232]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select 
 t.id , t.name, t.AGE , t2.name, t2.height
from (
SELECT  id, name, age , n =ROW_NUMBER()over( order by age)
FROM #PARTNER 

) t
inner join (
 SELECT  id, name, height, n =ROW_NUMBER()over( order by height)
 FROM #PARTNER 

) t2 on t.n =t2.n
19 июл 13, 17:52    [14591261]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Garisson
Как получить на выходе такой результат:(т.е сначала name выводится с сортировкой по AGE, а рядом тот же name с сортировкой по height)?
Вывести 2 результата, а потом объединить их в интерфейсе вашей программы.
19 июл 13, 20:05    [14591775]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Garisson
Member

Откуда:
Сообщений: 93
Эх, моя вина не указал, что MSSQL2000, а так бы с ROW_NUMBER() было бы прекрасно. По поводу вывода в программе, конечно можно там вывести как угодно, но хотелось бы все таки получить один recordset и перебирая его отображать результат. Можно ли сымитировать ROW_NUMBER() для MSSQL2000?
22 июл 13, 09:32    [14597145]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4769
Garisson,

и к какому же варианту относится id

id name AGE-1 name height-2
1 A 3 A 1
4 B 4 Z 3
3 Z 12 B 5
2 C 21 C 11
22 июл 13, 09:39    [14597186]     Ответить | Цитировать Сообщить модератору
 Re: Двойная сортировка  [new]
Garisson
Member

Откуда:
Сообщений: 93
ПЕНСИОНЕРКА
Garisson,

и к какому же варианту относится id

id name AGE-1 name height-2
1 A 3 A 1
4 B 4 Z 3
3 Z 12 B 5
2 C 21 C 11


Будем считать к тому, что ближе.
22 июл 13, 09:47    [14597236]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить