Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2019)
計算結果を違う行に表示
投稿日時: 23/03/02 10:11:01
投稿者: ラングドシャ

お願いいたします。
 
クエリ:合計 を作成しています。商品ごとに仕入数・売上数・在庫とあります。
売上の値を足して在庫の行に表示したいのですが可能でしょうか?
 
平均のフィールドには次の関数をいれました。
平均:IIf([項目]="売上",Format(([f11]+[f12]+[f13]+[f14]+[f15])/60,"00.0"),"")
 

品番	項目	F11	F12	F13	F14	F15	平均:IIf〜
AA-001	仕入	0	0	0	1000	0	
AA-001	売上	500	100	300	200	100	 20.0
AA-001	在庫	1000	900	600	1400	1300	

これにより、上記の様に項目:売上の値を足して60で割った20を表示してくれますが、
項目:在庫の行に売上の平均値を表示させることは可能でしょうか?
 
品番	項目	F11	F12	F13	F14	F15	平均:IIf〜
AA-001	仕入	0	0	0	1000	0	
AA-001	売上	500	100	300	200	100	
AA-001	在庫	1000	900	600	1400	1300	 20.0

このように表示したいのです。
 
よろしくお願いいたします。

回答
投稿日時: 23/03/02 10:36:07
投稿者: Suzu

別に演算フィールドを用意し、
DLookUp関数を用いて、
  同じ品番 かつ 項目が売り上げ の レコードの 平均フィールド
 の値を参照する様にすれば良いでしょう。
 
 
このクエリは 表示/印刷用のクエリの様に拝見します。
であれば、印刷用のワークテーブルを用意し、
そこで印刷したい様に整形してしまった方が、
クエリの演算時間より短く済む事もありますよ。
 
方法の一つとして、検討をされてはどうでしょうか。

回答
投稿日時: 23/03/02 11:14:16
投稿者: hatena
投稿者のウェブサイトに移動

[f11]+[f12]+[f13]+[f14]+[f15])/60
という式がなぜ平均になるのでしょうか。
実際の式は60のフィールドを加算しているということでしょうか。
 
このクエリはクロス集計クエリですか、それともただの集計クエリでしょうか。
 
クロス集計クエリの結果なら、もとのテーブルのフィールド構成、データ例を提示してください。
 
ただの集計クエリの結果ということなら、テーブルの正規化ができていませんので、テーブル設計から見直した方がいいでしょう。
正規化できていないデータベースは、データベースとしては使い物になりません。

投稿日時: 23/03/02 13:17:53
投稿者: ラングドシャ

Suzu様
ありがとうございます。
DLookUp関数を使うのですね。調べてやってみます。
ご指摘の通りこれは表示用といいますか、このレイアウトでエクセルにインポートし
利用しています。整形するためにワークテーブルを設ける方法のご提案ありがとうございます。
結果的にそうした方がメンテナンスも楽なような気がします。
今回の件が落ち着いたら検討してみます。
 
hatena様
ありがとうございます。
変な書き方をしてしまいました。
[f11]+[f12]+[f13]+[f14]+[f15]を60で割った値が欲しかっただけで、確かに平均ではありません。
失礼しました。
それと、これは単なる集計クエリです。
テーブルの正規化ができていないというのは、項目名がf11などになっている点でしょうか?
これは、エクセルのデータをインポートしたものを使っているのですが、f11〜に当たる項目名が
毎回変わるためインポートの際にあえて消しています。
その後、正しい項目名を付与できたらいいのですがそこまでの技術がなく、f11〜の名前で
処理しています。最終的にエクセルにエクスポートするのですが、エクセル上で項目名の
処理を行っています。

投稿日時: 23/03/02 14:15:09
投稿者: ラングドシャ

なんとか希望通りの表示ができました。
ありがとうございました。