2016-08-03 7 views
1

報告書があります。このレポートは多くの行を返します。列の1つはqty_req(必要数量)です。私はAVG()この列に必要とし、レポートの下部に平均の値を入れてください。問題は、この列に一部の行にゼロがあることがあることです。平均がゼロの行を除外したい。どうすればこれを達成できますか?MS Access:数量がゼロでないレポートの数量リストを平均化するにはどうすればよいですか?

私が試したこと:DAvgをクエリで使用しようとしましたが、クエリ時間が膨大になりました。

+2

ゼロ= 0これで合計には影響しません。なぜ除外する必要がありますか? – Andre

+0

@Andreもっと適用可能にします。今編集中。 – whatwhatwhat

+0

全体のポイントは、 'qty_req'カラムに' 0'がない場合にのみ行の 'SUM'または' AVG'を計算する必要があることです。 – whatwhatwhat

答えて

2

Avg()はNull値を無視します。だからIIf()式を使用してゼロ値をNullに置き換えて、そのIIf()式のAvg()を基底とします。ここで

は私のレポートのフッターにテキストボックスのコントロールのソースです:

=Avg(IIf([gainOrLoss]=0, Null, [gainOrLoss])) 

gainOrLossは、レポートのレコードソースのフィールドです。また、テキストボックスには、ゼロでもなくNULLでもないすべての値の平均が表示されます。

+0

これは機能しました。私はあなたに私が新しい質問としてそれを掲示したいかどうか分からない新しい質問を今、持っています。しかし、それはこれに似ています。もしそうなら、言葉だけを言います。 'qty_req'がゼ​​ロであるかどうかに基づいて、別の列' qty_issued'を合計する必要があります。したがって 'Sum([qty_issued])'は、 'qty_req'カラムがゼロの場合、合計に含めません。これはどうすればいいですか? – whatwhatwhat

+0

私はそれを作成しました:http://stackoverflow.com/questions/38747275/ms-access-how-can-i-take-the-average-of-a-column-and-ignore-therows-where-アノ – whatwhatwhat

-1

この場合、計算されたSUM()またはAVG()フィールドは使用できません。
これらの関数は、常にレポートのすべての行を使用します。

別途計算するには、DSum()またはDAvg()が必要です。

これが遅すぎる場合は、この問題に対処する必要があります。

+0

そうですね、どうすればこの問題に取り組むことができますか? – whatwhatwhat

関連する問題