2016-08-03 50 views
1

Ich habe 2 Spalten, qty_req und qty_issued in einem Bericht. Ich muss den Durchschnitt der Werte in der Spalte qty_issued finden. Das Problem ist, dass manchmal der entsprechende Wert von qty_req ist 0. Ich muss den Durchschnitt der qty_issued Spalte für nur die Zeilen nehmen, wo qty_reqist NICHT 0. Wie mache ich das?Ms Zugriff: Wie kann ich den Durchschnitt einer Spalte nehmen, aber die Zeilen ignorieren, wo eine andere Spalte 0 ist?

von meiner anderen Frage hier ausgegliedert: MS Access: How can I average a list of quantities on a report where the quantities are not zero?

+0

SELECT AVG (qty_issued), qty_req FROM (SELECT qty_issued, qty_req von YourTableName WHERE qty_req <> 0) GROUP BY qty_req' –

Antwort

0

Sie würden die Kriterien in der Abfrage festgelegt nicht am qty_req zu suchen, die 0:

SELECT Avg(MyTable.qty_issued) AS Avg_Issued 
FROM MyTable 
GROUP BY MyTable.qty_req 
HAVING MyTable.qty_req <> 0; 
2

Wenn Sie, dass in die tun wollen Steuerquelle eines Textfelds in Ihrem Bericht, können Sie die Tatsache nutzen, dass Avg() Null-Werte ignoriert.

Also, wenn qty_req <> 0, schließen Sie qty_issued unter den Werten, die gemittelt werden. Andernfalls verwenden Sie Null anstelle des Werts qty_issued.

=Avg(IIf(qty_req <> 0, qty_issued, Null)) 

Wenn Sie es in einer Abfrage tun wollen stattdessen ...

SELECT Avg(IIf(qty_req <> 0, qty_issued, Null)) FROM YourTable; 
+0

Ich habe das Beispiel der Abfrage hinzugefügt, weil ich die 'GROUP BY' Vorschläge gesehen habe, und ich denke nicht, dass diese tun werden, was Sie wollen. Ich sehe jedoch nicht, warum Sie in Ihrem Bericht eine separate Abfrage wünschen. – HansUp

+0

Welche Methode ist normalerweise schneller? Im Bericht oder in der Abfrage? – whatwhatwhat

+2

Testen Sie beide und sagen Sie uns! – HansUp