Microsoft SQL Server
BESTELLEN BIJ
Zoeken…
Opmerkingen
Het doel van de clausule ORDER BY is om de gegevens te sorteren die door een query worden geretourneerd.
Het is belangrijk op te merken dat de volgorde van rijen die door een query worden geretourneerd, niet is gedefinieerd, tenzij er een ORDER BY-clausule is.
Zie MSDN-documentatie voor volledige details van de ORDER BY-clausule: https://msdn.microsoft.com/en-us/library/ms188385.aspx
Eenvoudige BESTELBEPALING
Met behulp van de tabel Werknemers hieronder is een voorbeeld om de kolommen Id, FName en LName in (oplopende) LName-volgorde te retourneren:
SELECT Id, FName, LName FROM Employees
ORDER BY LName
Geeft terug:
ID kaart | FName | lname |
---|---|---|
2 | John | Johnson |
1 | James | smid |
4 | Johnathon | smid |
3 | Michael | Williams |
Om in aflopende volgorde te sorteren, voegt u het sleutelwoord DESC toe na de veldparameter, bijvoorbeeld dezelfde zoekopdracht in aflopende volgorde van LName is:
SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC
BESTELLEN OP meerdere velden
Voor de clausule ORDER BY
kunnen meerdere velden worden opgegeven, in ASCending- of DESCending-volgorde.
Als we bijvoorbeeld de tabel http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 gebruiken , kunnen we een zoekopdracht retourneren die in oplopende volgorde sorteert op SaleDate, en Hoeveelheid in aflopende volgorde.
SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC
Merk op dat het ASC
trefwoord optioneel is en de resultaten standaard worden gesorteerd in oplopende volgorde van een bepaald veld.
BESTEL DOOR met complexe logica
Als we de gegevens per groep anders willen bestellen, kunnen we een CASE
syntaxis toevoegen aan de ORDER BY
. In dit voorbeeld willen we werknemers van afdeling 1 op achternaam bestellen en werknemers van afdeling 2 op salaris.
ID kaart | FName | lname | Telefoonnummer | BeheerderId | DepartmentId | Salaris | Huur datum |
---|---|---|---|---|---|---|---|
1 | James | smid | 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 | smid | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
5 | Sam | Saksisch | 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
Aangepaste bestelling
Als u per kolom wilt bestellen met behulp van iets anders dan alfabetische / numerieke volgorde, kunt u case
gebruiken om de gewenste volgorde op te geven.
order by Group
retourneert:
Groep | tellen |
---|---|
Niet met pensioen | 6 |
Gepensioneerd | 4 |
Totaal | 10 |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
retourneert:
Groep | tellen |
---|---|
Totaal | 10 |
Gepensioneerd | 4 |
Niet met pensioen | 6 |