Неожиданное поведение Order по пункту - PullRequest
0 голосов
/ 24 мая 2010

У меня есть таблица, которая выглядит как

Col1    col2 col3 col4 col5
1  5       1     4     6
1  4       0     3     7   
0  1       5     6     3
1  8       2     1     5
4  3       2     1     4

Сценарий

declare @t table(col1 int, col2 int, col3 int,col4 int,col5 int)
insert into @t 
select 1,5,1,4,6 union all
select 1,4,0,3,7 union all
select 0,1,5,6,3 union all
select 1,8,2,1,5 union all
select 4,3,2,1,4

Я хочу, чтобы выходные данные были отсортированы по каждому столбцу в порядке возрастания, т.е.

Col1 col2 col3 col4 col5
    0  1       0     1     3
    1  3       1     1     4
    1  4       2     3     5
    1  5       2     4     6
    4  8       5     6     7

Как это сделать?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 24 мая 2010

Столбцы не зависят от их строки - порядок сортировки применяется ко всей строке, а не к отдельным столбцам. Все данные в строке считаются связанными - вы не можете по отдельности нарезать / перерезать / переставить данные, которые нарушают это.

Вы не можете делать то, что хотите, в текущей структуре.

3 голосов
/ 24 мая 2010

Этот порядок сортировки правильный.

Сначала сортируется по столбцу col1, затем по столбцу col2 (в пределах любых дубликатов в столбце col1) и т. Д. *

Обратите внимание, что для того же значения в col2, col2 в порядке возрастания:

Col1    col2    col3    col4    col5 
1       4         0     3       7 
1       5         1     4       6 
1       8         2     1       5 

Вот еще один пример. Представьте, что у нас есть список Lastname, Firstname:

Smith, Ian
Smith, John
Smith, Dave
Smith, Jane
Green, Jim

Отсортировано по Lastname ASC, Firstname ASC, что будет:

Green, Jim
Smith, Dave
Smith, Ian
Smith, Jane
Smith, John
...