2012-11-29 14 views
5

Ho questa query in applicazione VB sull'accesso DB:Numero errato di argomenti con SQL ISNULL() sul DB Access

SELECT DISTINCT Specialization, MAX(a.faultZone) AS faultZone, ISNULL(a.faultCount, 0) AS NoOfFaults FROM Technicians AS t 
    LEFT JOIN 
      ( 
      SELECT DISTINCT Faults.[Type] AS faultType, MAX(Faults.[Zone]) AS faultZone, COUNT(Faults.[Type]) AS faultCount 
      FROM Faults " 
      WHERE Faults.[Zone] = 8 " ' this value will be from variable 
      GROUP BY Faults.[Type] " 
      ) AS a 
    ON (t.Specialization = a.faultType) 
    WHERE t.specialization <> 'None' " 
    GROUP BY a.faultCount, t.Specialization 

Dà seguente problema che non riesco a risolvere ...

"numero errato di argomenti utilizzati con la funzione di espressione di query 'ISNULL (a.faultCount, 0'."

Quello che voglio ottenere è impostata semplicemente valore NoOFFaults a zero, il che significherebbe che non ci sono difetti in particolare Zone.

Thank You

risposta

7

Solo per aggiungere i miei due centesimi e mentre mi piace la semplice sintassi di Nz(), se cerchi prestazioni senza problemi, sia IsNull() che NZ() dovrebbero essere evitati in favore di Is Null:
IIF(a.faultCount Is Null, 0, a.faultCount).

Vedi l'eccellente spiegazione qui: http://allenbrowne.com/QueryPerfIssue.html

Inoltre, se le tabelle sono in SQL Server o Oracle, utilizzando Nz() forzerà più della query da eseguire a livello locale, con un impatto sulle prestazioni enorme.

+0

+1 Mi piace il collegamento. Personalmente non ho mai avuto problemi con Nz ma potrebbe essere un problema in alcuni casi – HelloW

+0

Estremamente vorrei poter accettare tutte le risposte qui. Ho controllato il link e posso riscrivere il mio codice. Molte grazie! – johnyTee

+0

Questo mi ha fatto passare molta frustrazione. Molto utile. Grazie. – StatsViaCsh

5

Penso che si sta cercando per la funzione nz

Nz(a.faultCount, 0) 

restituirà 0 se il valore è nullo

+0

Sì, ho appena cercato questo ed è anche una buona risposta. Thx – johnyTee

+1

+! - Wow, in qualche modo non l'ho mai visto, o completamente dimenticato. Mi piace il modo in cui le versioni di ISNULL di SQL Server e Access sono completamente diverse. – LittleBobbyTables

Problemi correlati