適用対象:SQL Server
元のデータの行のグループ全体に対応するクエリ結果を作成できます。 行を折りたたむ場合は、次の点に注意してください。
重複する行を排除 一部のクエリでは、複数の同じ行が表示される結果セットを作成できます。 たとえば、各行に作成者を含む市区町村の市区町村と州名が含まれる結果セットを作成できますが、市区町村に複数の作成者が含まれている場合は、同じ行が複数存在します。 結果の SQL は次のようになります。
SELECT city, state FROM authors;
上記のクエリによって生成された結果セットはあまり役に立ちません。 市区町村に 4 人の作成者が含まれている場合、結果セットには 4 つの同じ行が含まれます。 結果セットには市区町村と都道府県以外の列が含まれていないため、同じ行を互いに区別する方法はありません。 このような重複する行を回避する 1 つの方法は、行が異なる可能性のある追加の列を含める方法です。 たとえば、作成者名を含める場合、各行は異なります (1 つの都市内に同名の作成者が 2 人存在しない場合)。 結果の SQL は次のようになります。
SELECT city, state, fname, minit, lname FROM authors;
もちろん、上記のクエリは症状を排除しますが、実際には問題を解決しません。 つまり、結果セットに重複はありませんが、都市に関する結果セットではなくなりました。 元の結果セットの重複をなくし、各行に市区町村を記述するには、個別の行のみを返すクエリを作成できます。 結果の SQL は次のようになります。
SELECT DISTINCT city, state FROM authors;
重複を排除する方法の詳細については、「 重複する行を除外する」を参照してください。
行のグループに基づいて計算できます。つまり、行のグループで情報を集計できます。 たとえば、各行に作成者を含む市区町村の市区町村名と都道府県名と、その市区町村に含まれる作成者の数を含む結果セットを作成できます。 結果の SQL は次のようになります。
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state;
行のグループの計算の詳細については、「 クエリ結果の集計」および「クエリ結果 の 並べ替えとグループ化」を参照してください。
選択条件を使用して行のグループを含めることができます たとえば、各行に複数の作成者を含む市区町村の市区町村名と州名に加えて、その市区町村に含まれる作成者の数を含む結果セットを作成できます。 結果の SQL は次のようになります。
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state HAVING COUNT(*) > 1;
行のグループに選択基準を適用する方法の詳細については、「グループの 条件を指定 する」および 「同じクエリで HAVING 句と WHERE 句を使用する」を参照してください。