サーチ…


備考

ORDER BY句の目的は、クエリによって返されたデータをソートすることです。

ORDER BY句がない限り、クエリによって返される行順序は定義されていないことに注意することが重要です。

ORDER BY句の詳細については、MSDNのドキュメントを参照してください。https : //msdn.microsoft.com/en-us/library/ms188385.aspx

単純なORDER BY句

Employeesテーブルを使用して、Id、FNameおよびLName列を(昇順)LName順に返す例を以下に示します。

SELECT Id, FName, LName FROM Employees
ORDER BY LName

戻り値:

イド FName LName
2 ジョンジョンソン
1 ジェームススミス
4 ジョンナトンスミス
3 マイケルウィリアムズ

降順でソートするには、fieldパラメータの後にDESCキーワードを追加します。たとえば、LName降順の同じクエリは次のようになります。

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

ORDER BY複数のフィールド

複数のフィールドは、 ORDER BY句にASCendingまたはDESCendingのいずれかの順序で指定できます。

たとえば、 http: //stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211テーブルを使用して、SaleDateで昇順にソートしたクエリを返すことができます。数量は降順で表示されます。

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

ASCキーワードはオプションであり、結果は既定で指定されたフィールドの昇順でソートされます。

複雑なロジックを持つORDER BY

グループごとにデータを異なる順序で並べ替える場合は、 CASE構文をORDER BY追加できます。この例では、部門1の従業員を部門2の姓と従業員に給与で注文したいと考えています。

イド FName LName 電話番号マネージャーID DepartmentId 給料 HireDate
1 ジェームススミス 1234567890 ヌル 1 1000 01-01-2002
2 ジョンジョンソン 2468101214 1 1 400 23-03-2005
3 マイケルウィリアムズ 1357911131 1 2 600 12-05-2009
4 ジョンナトンスミス 1212121212 2 1 500 24-07-2016
5 サムサクソン 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

カスタムオーダー

アルファベット順/数値順以外の列を使用して列で並べ替える場合は、 casecaseを使用して必要な順序を指定できます。

order by Group返品:

グループカウント
退職していない 6
退職者 4
合計 10

order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end返します。

グループカウント
合計 10
退職者 4
退職していない 6


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow