行の並べ替え
クエリ結果の行を並べ替えることができます。つまり、特定の列または列のセットを指定し、その値で結果セットの行の順序を決定できます。
[!メモ]
並べ替え順序を決定する要素として列の照合順序があります。この照合順序は、「[照合順序] ダイアログ ボックス」で変更できます。
クエリ結果は、次の方法で並べ替えられます。
昇順または降順に行を並べ替える 既定では、SQL は ORDER BY 句で指定された列を使用して、行を昇順に並べ替えます。たとえば、書名を値段の安い順に並べるには、price 列を基準に行を単純に並べ替えます。結果の SQL ステートメントは次のようになります。
SELECT * FROM titles ORDER BY price
反対に、値段の高い本から順に書名を配列する場合は、最も高価なものを先頭にして並べ替えるように明示的に指定します。つまり、price 列の値を降順にして結果行を並べ替えるように指定します。結果の SQL ステートメントは次のようになります。
SELECT * FROM titles ORDER BY price DESC
複数の列を使って並べ替える たとえば、最初に州、次に都市の順序で並べ替えると、各著者に対して 1 行を表示する結果セットを作成できます。結果の SQL ステートメントは次のようになります。
SELECT * FROM authors ORDER BY state, city
結果セットに含まれない列を使って並べ替える たとえば、価格が結果セットに含まれていなくても、価格の高い順に書名を並べた結果セットを作成できます。結果の SQL ステートメントは次のようになります。
SELECT title_id, title FROM titles ORDER BY price DESC
派生列を使って並べ替える たとえば、印税が最高額である本の書名を最初に表示する結果セットを作成できます。結果の SQL ステートメントは次のようになります。
SELECT title, price * royalty / 100 as royalty_per_unit FROM titles ORDER BY royalty_per_unit DESC
各本の 1 冊あたりの印税を計算する式は、太字で示してあります。
派生列の計算には、上記の例のように SQL 構文を使用することも、スカラー値を返すユーザー定義関数を使用することもできます。ユーザー定義関数の詳細については、SQL Server のマニュアルを参照してください。
グループ化された行を並べ替える たとえば、都市とその都市の著者数が各行に記述されていて、多数の著者を含む都市が最初に表示される結果セットを作成できます。結果の SQL ステートメントは次のようになります。
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state ORDER BY COUNT(*) DESC, state
2 番目の並べ替えの基準にする列として、state 列が指定されています。したがって、著者の数が同じ州がある場合は、アルファベット順に表示されます。
各種言語のデータを使用して並べ替える つまり、列の既定の規則とは異なる照合規則を使用して、列を並べ替えることができます。たとえば、Jaime Patiño の作品の全書名を取得するクエリを作成できます。アルファベット順に書名を表示するには、書名列に対してスペインの照合規則を使用します。結果の SQL ステートメントは次のようになります。
SELECT title FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id WHERE au_fname = 'Jaime' AND au_lname = 'Patiño' ORDER BY title COLLATE SQL_Spanish_Pref_CP1_CI_AS
詳細については、「方法 : クエリおよびビュー デザイナーで各種言語データを使用する」を参照してください。結果の並べ替えの詳細については、「クエリ結果の並べ替えおよびグループ化」を参照してください。