2015-03-05 7 views
0

Сценарий: У меня есть следующая таблица: мне нравится сортировать два разных столбца простым способом.Сортировка разных столбцов (разных типов данных) в SQL Server

TestTable

List Val 
-------- 
a  20 
c  10 
b  30 

Результат:

List Val 
-------- 
a 10 
b 20 
c 30 

Я пробовал следующий запрос, но он не сортировать обе колонки

Select Col, val 
From Dummy 
Order By Col, val asc 

Но я получил желаемый результат на ниже запроса

With Q As 
(
    Select 
     Col, Val, 
     Row_Number() Over (Order By Col) TT1 
    From TestTable 
), 
Q1 As 
(
    Select 
     Col, Val, 
     Row_Number() Over (Order By Val) TT2 
    From TestTable 
) 
Select 
    Q.Col, Q1.Val 
From 
    Q, Q1 
Where 
    TT1 = TT2 

Но мне нужно знать, есть ли другой простой способ его достижения. Можем ли мы получить результат через JOIN.

+0

Я удалил свой ответ, я не заметил запрос без редактирования NoDisplayName в. Сожалею. –

+0

И почему вы это делаете. –

+0

Можете ли вы добавить еще несколько данных? Цель вашей сортировки неясна. Из предоставленных данных достаточно было бы алфавитного сортировки в списке, но из вашего примерного запроса оказалось, что его больше, чем этого. – CJBS

ответ

0

Чтобы получить желаемый результат, вы можете сделать что-то вроде этого:

SELECT ListSort.list, ValSort.val 
FROM 
(
SELECT TOP 100 PERCENT ROW_NUMBER() OVER(ORDER BY list) AS ID, list 
FROM TestTable 
ORDER BY list 
) ListSort INNER JOIN 
(
SELECT TOP 100 PERCENT ROW_NUMBER() OVER(ORDER BY val) AS ID, val 
FROM TestTable 
ORDER BY val 
) ValSort ON ListSort.ID = ValSort.ID 
Смежные вопросы