2010-12-28 15 views
0

Ich versuche, eine grundlegende Berechnung in MS Access SQL zu tun.Verwendung von Switch in MS Access SQL

Ich habe eine Tabelle Weekly, mit wöchentlichen Statistiken für jeden Benutzer genannt, enthält die folgenden Spalten: User, Fail, Pass, Approve und Reject (und einige unwichtige id und Datumswerte).

Wenn ich die folgende Abfrage ausführen:

SELECT User, Switch(Approve>0,Pass/Approve, Approve = 0, Null) AS passed_approved_ratio, Switch(Reject>0,Fail/Reject, Reject= 0, Null) AS fail_reject_ratio 
FROM Weekly 

Ich erhalte einen #ERROR Wert in mehreren resultierenden Reihen.

Ich habe versucht, es mit und ohne die zweite Bedingung + Wert im Switch funciton (Switch(Approve>0, Pass/Approve),

Ausfallen, Pass, genehmigen und alle ablehnen Nicht-Null-Zahlenwert in der Wochentabelle haben, also warum nicht, dass sie auf einen Nullwert lösen, wenn genehmigen oder Ablehnen sind 0

+0

Können die Werte <0 sein? Versuchen Sie, <= 0 als zweites Argument zu genehmigen. – dwo

+0

Es gibt keine negativen Werte in der Tabelle. In jedem Fall sollte ein negativer Wert zu Null führen, da keine Bedingungen erfüllt sind (gemäß der Definition der Switch-Funktion) – Jono

Antwort

2

Die Lösung:

Verwendung Iif, also:

SELECT Iif([Approve]>0, Pass/Approve, Null) as pass_approved_ratio 
FROM Weekly 

Das funktioniert jetzt gut. Ich würde immer noch gerne verstehen, warum ich Fehler mit Switch bekam, obwohl.

+0

Ihr Versuch, einen String-Wert zurückzugeben, aber keine Anführungszeichen. Versuchen Sie etwas wie: ID> 0, "Pass/Approve". Wenn Pass/Approve eine Spalte sein soll, würde ich das/entfernen und ich würde auch [Pass/Approve] versuchen. Schrägstrich und Dinge wie Leerzeichen sollten in Spaltennamen vermieden werden und die Verwendung von [] in diesen Fällen hilft viel –

+0

Albert, ich benutze es als Division Operator. Der Zweck dieses Ausdrucks besteht darin, zu verifizieren, dass der Divisor nicht Null ist. – Jono

3

In Hilfe Büro heißt es:

wechseln alle Ausdrücke auswertet, auch wenn es nur einer von ihnen zurückkehrt. Aus diesem Grund sollten Sie auf unerwünschte Nebenwirkungen achten. Wenn beispielsweise die Auswertung eines Ausdrucks zu einer Division durch Null führt, tritt ein Fehler auf.