次の方法で共有


行の並べ替え (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  
    

関連項目

クエリ結果の並べ替えとグループ化 (Visual Database Tools)
クエリとビューの設計方法に関するトピック (Visual Database Tools)