次の方法で共有


行の並べ替え (Visual Database Tools)

適用対象:SQL Server

クエリ結果の行を並べ替えることができます。 つまり、結果セット内の行の順序を決定する値を持つ特定の列または列のセットに名前を付けることができます。

手記

並べ替え順序は、列の照合順序によって部分的に決定されます。 照合順序は、[照合順序] ダイアログ ボックスで変更できます。

クエリ結果を並べ替えるには、いくつかの方法があります。

  • 行は昇順または降順に並べ替えることができます

    既定では、SQL は並べ替え列を使用して行を昇順に並べ替えます。 たとえば、書籍のタイトルを昇順で並べ替えるには、行を price 列で並べ替えるだけです。 結果の SQL は次のようになります。

    SELECT *
    FROM titles
    ORDER BY 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;
    

    (各書籍がコピーごとに獲得する使用料を計算するための数式が強調されています。

    派生列を計算するには、前の例のように SQL 構文を使用するか、スカラー値を返すユーザー定義関数を使用できます。 ユーザー定義関数の詳細については、SQL Server のドキュメントを参照してください。

  • グループ化された行を並べ替えることができます

    例えば、各行が都市を記述し、その都市にいる著者の数を示す結果セットを作成することができます。著者の多い都市が最初に表示されます。 結果の SQL は次のようになります。

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state;
    

    クエリでは、セカンダリ並べ替え列として state が使用されます。 したがって、2 つの状態の作成者数が同じ場合、それらの状態はアルファベット順に表示されます。

  • 国際データを使用して並べ替えることができます

    それです;列の既定の規則とは異なる照合規則を使用して列を並べ替えることができます。 たとえば、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;