Accessでお仕事 グループから抽出し、行全体を表示する

グループから抽出し、行全体を表示する

 レコードグループの処理では、演算だけでなく、[最小]、[最大]、[先頭]、[最後]など、単独行の抽出もできます。
 「クエリのレコード グループに対して 合計、平均、カウント、その他の集計を行う」で、グループ化の対象とした項目だけを表示する方法を示しましたが、ここでは、そのクエリを元のテーブルと組合せて、該当行全体を表示させる「クエリ重ね技」を紹介します。

 事例のデータ(Orderテーブル) から、「得意先」別に、一つの受注オーダでの、最大発注金額の商品を表示してみましょう。

1.クエリーの新規作成で、Order を追加します。
2.クエリで、商品の「単価」と「数量」をかけて「金額」を計算します。
 計算式の設定には、 (ビルド) を押して、式ビルダを使います。
 前後しますが、クエリで演算を実行する方法にも説明があります。

 SQLビュウでは、以下のようになっています。
「金額」クエリー
SELECT Order.*, [Order]![単価]*[Order]![数量] AS 金額
FROM [Order];

3.クエリーの新規作成で、「クエリ」タブを選択して、リストの中から、上で作成した、「金額」を追加します。

4.フィールドの「得意先」と「金額」を選択して、ツールバーの「 (集計) 」ボタンを押して、集計項目を表示させ、「金額」のフィールドに、「最大」選択します。

 結果は、「得意先」の数、50件、抽出されていることに注目下さい。
 SQLビュウでは、以下のようになっています。
「最大」クエリー
SELECT 金額.得意先, Max(金額.金額) AS 金額の最大
FROM 金額
GROUP BY 金額.得意先;

5.クエリーの新規作成で、「クエリ」タブを選択して、リストの中から、上で作成した、「最大」と「金額」の二つのクエリを追加します。

6.「最大」クエリーの「得意先」を「金額」クエリの「得意先」と、また、「最大」クエリーの「金額の最大」と「金額」クエリの「金額」を、それぞれドラッグ&ドロップして、リレーションを設定します。
 そして、「金額」クエリの「*」をダブルクリックして、「金額」クエリの全フィールドを、下段のフィールド欄に追加します。
 データシート・ビューでは、右のように全フィールドか表示されます。
 右の画面では、結果を金額の降順で並び替えて表示しています。

 注意点は、行数が 58 になっていることです。これは、同一の金額で複数の商品があったためです。

 SQLビュウでは、以下のようになっています。
「最大行」クエリー
SELECT 金額.*
FROM 最大 INNER JOIN 金額 ON (最大.金額の最大 = 金額.金額) AND (最大.得意先 = 金額.得意先);

Excel の並び替えと集計の使い方

 Excelでは、並び替えと集計を使って、グループ集計します。

1.メニューの「データ」→「並び替え」で、「得意先」順、「金額」順に並び替えます。
2.メニューの「データ」→「集計」で、「得意先」別に「金額」の「最大値」を求めます。
3.「判定」列を追加しておいて、どれか一つの列の2行目以下を選択して、1行ずらして貼り付けます。
4.オートフィルタで、「判定」列の「空白セル」を選択します。
5.結果が表示されます。

 注意点は、この方法では、同一金額があっても、並び替え時の最後の商品しか表示されません。つまり、「得意先」の行数だけ、表示されます。

このページのトップに戻る↑ 次の項目を見る↓ Accessでお仕事 目次に戻る

ホームページのトップに戻る