2010-05-24 6 views
0

J'ai une table qui ressemble àComportement inattendu de l'ordre par la clause

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 

Le script est

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 

Je veux que la sortie soit chaque colonne étant trié dans l'ordre croissant à savoir

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 

Comment le faire?

Merci à l'avance

+0

pouvez-vous expliquer pourquoi vous voulez cela? –

Répondre

3

Les colonnes ne sont pas indépendantes de leur ligne - ordre de tri s'applique à la ligne entière, et non pas à des colonnes individuelles . Toutes les données d'une ligne sont considérées comme étant liées - vous ne pouvez pas couper/dés/réorganiser des données qui ne respectent pas cette règle.

Vous ne pouvez pas faire ce que vous voulez faire dans la structure actuelle que vous avez.

+1

+1. Excellente explication. –

+3

+1 Je ne dirais pas qu'il est * impossible * de retourner ces résultats, mais c'est presque certainement mal faire (tm) à un ou plusieurs niveaux. –

+0

Monsieur, alors quelle sera la requête pour atteindre cet objectif .. pourriez-vous s'il vous plaît aider – Newbie

3

Cet ordre de tri est correcte.

Il est d'abord trié par col1, puis par col2 (au sein des doublons dans col1), etc ...

Remarquez comment pour une même valeur dans col2, col2 est dans l'ordre croissant:

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

Voici un autre exemple. Imaginez que nous avons une liste de Lastname, Firstname:

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

Trié par Lastname ASC, Firstname ASC qui serait:

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

Mais je veux que la sortie soit triée pour chaque colonne – Newbie

+0

La chose que vous pensez que vous voulez est impossible !! Vous devez traiter chaque colonne séparément de sa rangée. –

Questions connexes