Microsoft SQL Server
ORDINATO DA
Ricerca…
Osservazioni
Lo scopo della clausola ORDER BY è di ordinare i dati restituiti da una query.
È importante notare che l' ordine delle righe restituite da una query non è definito a meno che non ci sia una clausola ORDER BY.
Vedere la documentazione MSDN per i dettagli completi della clausola ORDER BY: https://msdn.microsoft.com/en-us/library/ms188385.aspx
Semplice clausola ORDER BY
Utilizzando la tabella Impiegati , di seguito è riportato un esempio per restituire le colonne Id, FName e LName nell'ordine (ascendente) LName:
SELECT Id, FName, LName FROM Employees
ORDER BY LName
Ritorna:
Id | FName | LName |
---|---|---|
2 | John | Johnson |
1 | Giacomo | fabbro |
4 | Johnathon | fabbro |
3 | Michael | Williams |
Per ordinare in ordine discendente aggiungere la parola chiave DESC dopo il parametro field, ad es. La stessa query nell'ordine decrescente LName è:
SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC
ORDINA DA più campi
È possibile specificare più campi per la clausola ORDER BY
, in ordine ascendente o DESCending.
Ad esempio, utilizzando la http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 tabella, possiamo restituire una query che ordina da SaleDate in ordine ascendente, e Quantità in ordine decrescente.
SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC
Si noti che la parola chiave ASC
è facoltativa e i risultati vengono ordinati in ordine crescente di un dato campo per impostazione predefinita.
Ordina con logica complessa
Se vogliamo ordinare i dati in modo diverso per gruppo, possiamo aggiungere una sintassi CASE
a ORDER BY
. In questo esempio, vogliamo ordinare ai dipendenti del Dipartimento 1 il cognome e i dipendenti del Dipartimento 2 per stipendio.
Id | FName | LName | Numero di telefono | ManagerID | DepartmentID | Stipendio | Data di assunzione |
---|---|---|---|---|---|---|---|
1 | Giacomo | fabbro | 1234567890 | NULLO | 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 | fabbro | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
5 | Sam | sassone | 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
Ordinazione personalizzata
Se si desidera ordinare in base a una colonna utilizzando qualcosa di diverso dall'ordinamento alfabetico / numerico, è possibile utilizzare il case
per specificare l'ordine desiderato.
order by Group
resi di order by Group
:
Gruppo | Contare |
---|---|
Non ritirato | 6 |
Pensionato | 4 |
Totale | 10 |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
restituisce:
Gruppo | Contare |
---|---|
Totale | 10 |
Pensionato | 4 |
Non ritirato | 6 |