Microsoft SQL Server
SORTIEREN NACH
Suche…
Bemerkungen
Der Zweck der ORDER BY-Klausel besteht darin, die von einer Abfrage zurückgegebenen Daten zu sortieren.
Beachten Sie, dass die Reihenfolge der von einer Abfrage zurückgegebenen Zeilen undefiniert ist, es sei denn, es gibt eine ORDER BY-Klausel.
Ausführliche Informationen zur ORDER BY-Klausel finden Sie in der MSDN-Dokumentation: https://msdn.microsoft.com/en-us/library/ms188385.aspx
Einfache ORDER BY-Klausel
Im Folgenden wird anhand der Employees-Tabelle die Spalte Id, FName und LName in (aufsteigender) LName-Reihenfolge zurückgegeben:
SELECT Id, FName, LName FROM Employees
ORDER BY LName
Kehrt zurück:
Ich würde | FName | LName |
---|---|---|
2 | John | Johnson |
1 | James | Schmied |
4 | Johnathon | Schmied |
3 | Michael | Williams |
Um in absteigender Reihenfolge zu sortieren, fügen Sie das DESC-Schlüsselwort nach dem Feldparameter hinzu, z. B. dieselbe Abfrage in absteigender LName-Reihenfolge:
SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC
ORDER BY mehrere Felder
Für die ORDER BY
Klausel können mehrere Felder angegeben werden, entweder in ASCending- oder DESCending-Reihenfolge.
Mithilfe der Tabelle http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 können wir beispielsweise eine Abfrage zurückgeben, die nach SaleDate in aufsteigender Reihenfolge sortiert wird, und Menge in absteigender Reihenfolge.
SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC
Beachten Sie, dass das ASC
Schlüsselwort optional ist und die Ergebnisse standardmäßig in aufsteigender Reihenfolge eines bestimmten Felds sortiert werden.
ORDER BY mit komplexer Logik
Wenn wir die Daten für jede Gruppe anders bestellen möchten, können wir dem ORDER BY
eine CASE
Syntax hinzufügen. In diesem Beispiel möchten wir Mitarbeiter aus Abteilung 1 nach Nachnamen und Mitarbeiter aus Abteilung 2 nach Gehalt bestellen.
Ich würde | FName | LName | Telefonnummer | ManagerId | DepartmentId | Gehalt | Anstellungsdatum |
---|---|---|---|---|---|---|---|
1 | James | Schmied | 1234567890 | NULL | 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 | Schmied | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
5 | Sam | Sächsisch | 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
Kundenspezifische Bestellung
Wenn Sie nach einer Spalte in einer anderen Reihenfolge als in alphabetischer / numerischer Reihenfolge bestellen möchten, können Sie mit case
die gewünschte Reihenfolge angeben.
order by Group
:
Gruppe | Anzahl |
---|---|
Nicht im Ruhestand | 6 |
Im Ruhestand | 4 |
Gesamt | 10 |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
:
Gruppe | Anzahl |
---|---|
Gesamt | 10 |
Im Ruhestand | 4 |
Nicht im Ruhestand | 6 |