J'essaie de trier plusieurs colonnes en SQL et dans différentes directions. column1
serait trié par ordre décroissant, et column2
par ordre croissant.
Comment puis-je faire ceci?
ORDER BY column1 DESC, column2
Cela trie tout d'abord par column1
(décroissant), puis par column2
(croissant, qui est la valeur par défaut) lorsque les champs column1
de deux ou plusieurs lignes sont égaux.
Les autres réponses manquent d'un exemple concret, alors voici:
Étant donné le tableau Personnes suivant:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Si vous exécutez la requête ci-dessous:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Le jeu de résultats ressemblera à ceci:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
L'ordre des colonnes multiples dépend des valeurs correspondantes des deux colonnes: Voici mon exemple de table où deux colonnes sont nommées alphabets et nombres et les valeurs de ces deux colonnes sont asc et desc commandes.
Maintenant, j'exécute Order By dans ces deux colonnes en exécutant la commande ci-dessous:
Maintenant, encore une fois, j'insère de nouvelles valeurs dans ces deux colonnes, où Alphabet value in ASC:
et les colonnes de la table Example ressemblent à ceci. Maintenant, effectuez à nouveau la même opération:
Vous pouvez voir que les valeurs de la première colonne sont dans l'ordre décroissant, mais que la deuxième colonne n'est pas dans l'ordre ASC.
Vous pouvez utiliser plusieurs commandes sur plusieurs conditions,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC