#793 金額がTOP5のデータを顧客コード順に並べ替える クエリ

ある販売実績のテーブルから顧客ごとの販売金額を集計し、それが大きい順にトップ5を抽出、さらにそれを顧客コード順に並べ替えて出力するクエリの作り方です。

まず、ベースとなるクエリを作ります。




ここでは、顧客コードと顧客名でグループ化、レコードごとに[単価]*[数量]を計算し、グループごとの金額の”合計”を求めます。
さらに、金額の大きい順にトップ値を取るので、その演算フィールドに”降順”を指定します。
そして、トップ5を抽出するため、プロパティシートの「トップ値」プロパティ欄に「5」を指定します。


しかしこの状態では金額の降順が反映され、顧客コード順にはなりません。そこでここから、画面をクエリの”SQL ビュー”に切り替えて、SQL文を直接編集していきます。

具体的には、上記で生成されたSQL文全体を”サブクエリ”化し、そこから取得されたレコードが今度は顧客コードの”昇順”で返されるようにします。

■変更前のSQL文

SELECT
    TOP 5 tbl販売実績.顧客コード,
    tbl販売実績.顧客名,
    Sum([単価] * [数量]) AS 金額
FROM
    tbl販売実績
GROUP BY
    tbl販売実績.顧客コード,
    tbl販売実績.顧客名
ORDER BY
    Sum([単価] * [数量]) DESC;


■変更後のSQL文
   下記2ケ所を手入力で編集します。その間のサブクエリ化された部分は元のSQL文のままです。

SELECT * FROM (           ← この部分を追加
    SELECT
        TOP 5 tbl販売実績.顧客コード,
        tbl販売実績.顧客名,
        Sum([単価] * [数量]) AS 金額
    FROM
        tbl販売実績
    GROUP BY
        tbl販売実績.顧客コード,
        tbl販売実績.顧客名
    ORDER BY
        Sum([単価] * [数量]) DESC
) ORDER BY 顧客コード           ←← この部分を追加






| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved