行グループの集約 (Visual Database Tools)

適用対象:SQL Server

基になるデータの行グループ全体に結果の各行が対応するようなクエリ結果を作成することができます。 行を集約するときは、次の点に注意してください。

  • 重複する行を除外する クエリによっては、同じ行が複数出現する結果セットが作成されます。 たとえば、著者の居住地の市町村名と州名を各行に含む結果セットを作成するとします。この場合、複数の著者が住む市町村があると、同じ行が複数作成されます。 結果の SQL ステートメントは次のようになります。

    SELECT city, state  
    FROM authors  
    

    前のクエリで生成される結果セットは、あまり役に立ちません。 たとえば、ある市に 4 人の著者が住んでいる場合、結果セットには同じ行が 4 つ含まれることになります。 結果セットには市町村名と州名以外の列は含まれていないので、同じ行を相互に区別する方法はありません。 重複する行の生成を防ぐ 1 つの方法は、各行を区別する列を追加することです。 たとえば、著者の名前の列を加えると、同じ市内に同じ名前の著者が 2 人いない限り、各行を区別できるようになります。 結果の SQL ステートメントは次のようになります。

    SELECT city, state, fname, minit, lname  
    FROM authors  
    

    上記のクエリを使用すると問題の状況は回避できますが、この方法では、問題を根本的に解決することはできません。 つまり、結果セットから重複が除去される代わりに、結果セットが市町村に関するものではなくなってしまいます。 元の結果セットにあった重複を除去し、その上で各行が市町村の情報を示すようにするには、異なる行だけを返すクエリを作成します。 結果の SQL ステートメントは次のようになります。

    SELECT DISTINCT city, state  
    FROM authors  
    

    重複除去の詳細については、「重複する行の除外 (Visual Database Tools)」を参照してください。

  • 行グループに対して計算を行う 行グループの情報をまとめることができます。 たとえば、著者の居住する市と州の名前、およびその市に居住する著者の人数を各行に格納した結果セットを作成できます。 結果の SQL ステートメントは次のようになります。

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

    行グループに対する計算については、「クエリ結果の要約 (Visual Database Tools)」と「クエリ結果の並べ替えおよびグループ化 (Visual Database Tools)」を参照してください。

  • 行グループを含む選択条件を使用する たとえば、複数の著者が住んでいる市と州の名前、およびその市に住んでいる著者の数が各行に格納された結果セットを作成できます。 結果の SQL ステートメントは次のようになります。

    SELECT city, state, COUNT(*)  
    FROM authors  
    GROUP BY city, state  
    HAVING COUNT(*) > 1  
    

    行グループに選択条件を適用する方法については、「グループの条件を指定する方法 (Visual Database Tools)」と「同一クエリ内で HAVING 句および WHERE 句を使用する (Visual Database Tools)」を参照してください。

参照

検索基準の指定 (Visual Database Tools)
クエリおよびビューのデザインの操作方法に関するトピック (Visual Database Tools)