Microsoft SQL Server
COMMANDÉ PAR
Recherche…
Remarques
La clause ORDER BY a pour objet de trier les données renvoyées par une requête.
Il est important de noter que l' ordre des lignes renvoyées par une requête n'est pas défini, sauf s'il existe une clause ORDER BY.
Voir la documentation MSDN pour plus de détails sur la clause ORDER BY: https://msdn.microsoft.com/en-us/library/ms188385.aspx
Clause ORDER BY simple
À l'aide de la table Employees , vous trouverez ci-dessous un exemple pour renvoyer les colonnes Id, FName et LName dans l'ordre LName (croissant):
SELECT Id, FName, LName FROM Employees
ORDER BY LName
Résultats:
Id | FName | LName |
---|---|---|
2 | John | Johnson |
1 | James | Forgeron |
4 | Johnathon | Forgeron |
3 | Michael | Williams |
Pour trier par ordre décroissant, ajoutez le mot-clé DESC après le paramètre de champ, par exemple la même requête dans l'ordre décroissant LName est:
SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC
COMMANDER PAR plusieurs champs
Plusieurs champs peuvent être spécifiés pour la clause ORDER BY
, dans l'ordre ASCending ou DESCending.
Par exemple, à l'aide de la table http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 , nous pouvons renvoyer une requête qui trie par SaleDate dans l'ordre croissant, et Quantité en ordre décroissant.
SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC
Notez que le mot-clé ASC
est facultatif et que les résultats sont triés dans l'ordre croissant d'un champ donné par défaut.
ORDRE BY avec logique complexe
Si nous voulons commander les données différemment pour chaque groupe, nous pouvons ajouter une syntaxe CASE
à la commande ORDER BY
. Dans cet exemple, nous voulons commander les employés du département 1 par nom de famille et les employés du département 2 par salaire.
Id | FName | LName | Numéro de téléphone | ManagerId | DépartementId | Un salaire | Date d'embauche |
---|---|---|---|---|---|---|---|
1 | James | Forgeron | 1234567890 | NUL | 1 | 1000 | 01-01-2002 |
2 | John | Johnson | 2468101214 | 1 | 1 | 400 | 23-03-2005 |
3 | Michael | Williams | 1357911131 | 1 | 2 | 600 | 12-05-2009 |
4 | Johnathon | Forgeron | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
5 | Sam | saxon | 1372141312 | 2 | 2 | 400 | 25-03-2015 |
The following query will provide the required results:
SELECT Id, FName, LName, Salary FROM Employees
ORDER BY Case When DepartmentId = 1 then LName else Salary end
Commande personnalisée
Si vous souhaitez passer une commande en utilisant une colonne autre que l'ordre alphabétique / numérique, vous pouvez utiliser la case
pour spécifier l'ordre souhaité.
order by Group
retourne:
Groupe | Compter |
---|---|
Non retiré | 6 |
Retraité | 4 |
Total | dix |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
retours order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
:
Groupe | Compter |
---|---|
Total | dix |
Retraité | 4 |
Non retiré | 6 |