J'essaie de trier par plusieurs colonnes en SQL et dans des directions différentes. column1
serait trié par ordre décroissant et column2
croissant.
Comment puis-je faire ceci?
J'essaie de trier par plusieurs colonnes en SQL et dans des directions différentes. column1
serait trié par ordre décroissant et column2
croissant.
Comment puis-je faire ceci?
Réponses:
ORDER BY column1 DESC, column2
Cela trie tout par column1
(décroissant) d'abord, puis par column2
(croissant, qui est la valeur par défaut) chaque fois que les column1
champs de deux lignes ou plus sont égaux.
column1
abord, puis par column2
chaque fois que les column1
champs de deux lignes sont égaux.
column2
puis effectue un tri STABLE par column1
. Ceci est plus clair pour les personnes qui savent ce qu'est un tri stable.
Les autres réponses manquent d'un exemple concret, alors voici:
Étant donné la table People suivante :
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
L'ensemble de résultats ressemblera à ceci:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Existe - t-il un moyen de surmonter cela?
FirstName, LastName
entrées en double avec distinctYearOfBirth
L'ordre des colonnes multiples dépend des valeurs correspondantes des deux colonnes: voici mon exemple de tableau où se trouvent deux colonnes nommées avec des alphabets et des nombres et les valeurs dans ces deux colonnes sont des ordres asc et desc .
Maintenant, j'exécute Order By dans ces deux colonnes en exécutant la commande ci-dessous:
Maintenant, j'insère de nouvelles valeurs dans ces deux colonnes, où la valeur alphabétique dans l' ordre ASC :
et les colonnes de l'exemple de tableau ressemblent à ceci. Effectuez à nouveau la même opération:
Vous pouvez voir que les valeurs dans la première colonne sont dans l'ordre desc mais la deuxième colonne n'est pas dans l'ordre ASC.
(g, 10),(g,12)
. Ensuite, exécutez votre requête de commande, vous obtenez la deuxième colonne comme ASC
commande (cela signifieg-10,g-11,g-12)
Vous pouvez utiliser plusieurs commandes à 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