2016-08-03 2 views
1

У меня есть отчет. Эти отчеты возвращают много строк. Один из столбцов - qty_req (требуется количество). Мне нужно указать AVG() этот столбец и поместить значение в среднем в нижней части отчета. Проблема в том, что иногда некоторые строки имеют нуль в этом столбце. Я хочу, чтобы среднее исключало любые строки, где есть нуль. Как я могу это сделать?MS Access: Как я могу усреднить список величин в отчете, где величины не равны нулю?

Что я пробовал: Я попытался использовать DAvg в запросе, но это сделало запрос временем огромным.

+2

Zero = 0. Это не повлияет на сумму, так зачем вам их исключать? – Andre

+0

@ Аndre Я сделаю его более применимым. Редактирование сейчас. – whatwhatwhat

+0

В целом, мне нужно делать вычисления на 'SUM' или' AVG' строк IF и ONLY, если столбец 'qty_req' не имеет в нем' 0'. – whatwhatwhat

ответ

2

Avg() игнорирует значения Null. Таким образом, вы можете использовать выражение IIf() для замены Null для нулевых значений, а затем введите Avg() на это выражение IIf().

Вот источник управления для текстового поля в сноске моего доклада:

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

gainOrLoss это поле отчета Record Source. И в текстовом поле отображается среднее значение всех тех значений, которые не равны ни нулю, ни Null.

+0

Это сработало. У меня есть новый вопрос сейчас, не уверен, хотите ли вы, чтобы я опубликовал его как новый вопрос или нет. Это так похоже на это. Если так, просто скажите слово, и я это сделаю. Теперь мне нужно суммировать еще один столбец 'qty_issued', исходя из того, равен ли qty_req нулю. Итак, 'Sum ([qty_issued])', но если столбец 'qty_req' равен нулю, не включайте его в суммирование. Как мне это сделать? – whatwhatwhat

+0

Хорошо, я создал его: http://stackoverflow.com/questions/38747275/ms-access-how-can-i-take-the-a-so----column-and-ignore-the-rows-where- anot – whatwhatwhat

-1

Хорошо, тогда вы не можете использовать расчетное поле SUM() или AVG(), простое.
Эти функции всегда используют все строки в отчете.

Вам необходимо DSum() или DAvg(), чтобы рассчитать его отдельно.

Если это слишком медленно, вам необходимо решить эту проблему.

+0

Правильно, так как я могу «решить эту проблему»? – whatwhatwhat