#748 単価を価格帯でグループ集計するには? クエリ

商品データが登録されているテーブルに「単価」フィールドがあるとき、単純にそれをグループ化して集計すると次のようにすべての単価が1円単位でリストアップされます。


それに対して、それぞれの単価そのものではなく、一定の価格帯、たとえば「1円〜100円、101円〜200円のような100円単位」でグループ化したいといった場合には、「Partition関数」を使います。

Partition関数は次のような構文で使います。

Partition(フィールド, 範囲の先頭の値, 範囲の最後の値, 帯を区切る単位)

たとえば、単価フィールドの値を100円ごとに区切りたいとき、
  • ”フィールド”には「単価」を指定します
  • ”範囲の先頭の値”には「1」を指定します(単価は常に1円以上とした場合)
  • ”範囲の最後の値”には「1000」を指定します(単価はほとんどの商品が千円以下とした場合)
  • ”帯を区切る単位”には「100」を指定します

クエリのデザインビューにおいては、次のようにこのPartition関数を使った演算フィールドを設定し、それで”グループ化”ます。ここでは「tbl商品マスタ」テーブルの「販売単価」フィールドの値を100円ごとに価格帯集計して、それぞれの件数を出力します。

価格帯: Partition([販売単価],1,1000,100)



実行例:

  • Partition関数の返り値は、1円〜100円は「1: 100」、101円〜200円は「101: 200」のように出力されます。
  • また今回の場合は”範囲の最後の値”には「1000」を指定していますが、それを超える値がある場合は上図のように「1001:」のように出力されます。
  • 「101: 200」のような形式の出力結果を「101〜 200」のようにしたい場合には、演算式を次のようにします。ここでは「:」を「〜」にReplace関数で置き換えています。

価格帯: Replace(Partition([販売単価],1,1000,100),":","〜")
| Index | Prev | Next |



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