Szukaj…


Uwagi

Celem klauzuli ORDER BY jest sortowanie danych zwróconych przez zapytanie.

Należy zauważyć, że kolejność wierszy zwracanych przez zapytanie jest niezdefiniowana, chyba że istnieje klauzula ORDER BY.

Aby uzyskać szczegółowe informacje na temat klauzuli ORDER BY, zobacz dokumentację MSDN: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Prosta klauzula ORDER BY

Korzystając z tabeli pracowników poniżej znajduje się przykład zwracania kolumn Id, FName i LName w (rosnącej) kolejności LName:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Zwroty:

ID FName LName
2) Jan Johnson
1 James Kowal
4 Johnathon Kowal
3) Michael Williams

Aby sortować w kolejności malejącej, dodaj parametr DESC po parametrze pola, np. To samo zapytanie w kolejności malejącej LName:

SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC

ZAMÓWIENIE WEDŁUG wielu pól

Dla klauzuli ORDER BY można określić wiele pól, w kolejności rosnącej lub malejącej.

Na przykład, używając tabeli http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 , możemy zwrócić zapytanie sortowane według SaleDate w porządku rosnącym, oraz Ilość w porządku malejącym.

SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC

Zauważ, że słowo kluczowe ASC jest opcjonalne, a wyniki są domyślnie sortowane w porządku rosnącym danego pola.

ORDER BY ze złożoną logiką

Jeśli chcemy uporządkować dane inaczej dla każdej grupy, możemy dodać składnię CASE do ORDER BY . W tym przykładzie chcemy zamówić pracowników z Działu 1 według nazwiska, a pracowników z Działu 2 według wynagrodzenia.

ID FName LName Numer telefonu ManagerId DepartmentId Wynagrodzenie Data wynajmu
1 James Kowal 1234567890 ZERO 1 1000 01-01-2002
2) Jan Johnson 2468101214 1 1 400 23-03-2005
3) Michael Williams 1357911131 1 2) 600 12-05-2009
4 Johnathon Kowal 1212121212 2) 1 500 24-07-2016
5 Sam Sas 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

Zamówienie niestandardowe

Jeśli chcesz zamówić według kolumny przy użyciu czegoś innego niż uporządkowanie alfabetyczne / numeryczne, możesz użyć case aby określić żądaną kolejność.

order by Group zwrotów order by Group :

Grupa Liczyć
Nie wycofany 6
Na emeryturze 4
Całkowity 10

order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end zwraca:

Grupa Liczyć
Całkowity 10
Na emeryturze 4
Nie wycofany 6


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow