Microsoft SQL Server
ORDER BY
サーチ…
備考
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
カスタムオーダー
アルファベット順/数値順以外の列を使用して列で並べ替える場合は、 caseとcaseを使用して必要な順序を指定できます。
order by Group返品:
| グループ | カウント |
|---|---|
| 退職していない | 6 |
| 退職者 | 4 |
| 合計 | 10 |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end返します。
| グループ | カウント |
|---|---|
| 合計 | 10 |
| 退職者 | 4 |
| 退職していない | 6 |