プロが教える店舗&オフィスのセキュリティ対策術

ACCESS初心者です。

図のようなテーブルがあります。
このテーブルの右側にクエリで「各商品の平均値(空白セルは省く)」
ならびに「空白セルの個数」を反映したいと思っております。

過去に質問をさせていただいた案件(https://oshiete.goo.ne.jp/qa/9327298.html)の内容と類似することから、
恐らくモジュールならびにクエリ式を合わせ技にて両値を反映することになるかと想定しているのですが、調べてもなかなか当案件に類似した内容の記載を見出すことができません。

モジュール・クエリ両内容をどなたかご提案いただけないでしょうか?

何卒よろしくお願いいたします。

「ACCESSにてフィールド間の平均(空白」の質問画像

A 回答 (1件)

図示されたようなテーブル設計はよくありません。


もしかしてクロス集計クエリから作成したテーブル?
それとも、他からインポートしたデータ?
欠点は、
日にち分のフィールドが必要、
月が替わると再度テーブルを作り直す必要がある、
かといって年間(365日)分だけ作るのも不可。フィールド数は最大でも255まで。
集計などの分析が困難など後々泥沼に。。。
http://www.accessdbstudy.net/entry/20140915/p1

商品名 日付    価格
イチゴ 2016/07/01 200
イチゴ 2016/07/03 400
イチゴ 2016/07/04 400
バナナ 2016/07/02 100
バナナ 2016/07/03 150
メロン 2016/07/01 200
メロン 2016/07/02 150
メロン 2016/07/03 100
メロン 2016/07/04 120
メロン 2016/08/01 200

のようなデザインであればクロス集計で、
テーブル名をT1とするとSQL文は、

TRANSFORM First(T1.価格) AS 価格の先頭
SELECT T1.商品名,
(DMax("日付","T1","日付 Between #2016/7/1# And #2016/7/31#")-DMin("日付","T1","日付 Between #2016/7/1# And #2016/7/31#")+1)- DCount("日付","T1","日付 Between #2016/7/1# And #2016/7/31# and 商品名='" & 商品名 & "'") AS 売切回数,
Int(Avg(T1.[価格])+0.5) AS 平均価格,
Max(T1.価格) AS 最大価格
FROM T1
WHERE T1.日付 Between #2016/7/1# And #2016/7/31#
GROUP BY T1.商品名
PIVOT Format(T1.日付,"mm/dd");

 で、
商品名 売切回数 平均価格 最大価格 07/01 07/02 07/03 07/04
イチゴ   1     333   400  200      400  400
バナナ   2     125   150      100  150
メロン   0     143   200  200   150  100  120
のようになります。
新規クエリをSQLビューに切り替えて上記のSQL文を貼り付けてみてください。
平均価格は四捨五入しています。
デザインビューに切り替えられますので確認してみてください。
売切回数を求める部分の出来が良くありません。
レコード数次第では遅くて使い物にならないかも?ご参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す