我在Access DB的VB应用程序中有此查询:
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
它给出了我无法解决的以下问题…
“查询表达式’ISNULL(a.faultCount,0’)中的函数使用的参数数量错误。”
我要实现的只是将值设置NoOFFaults为零,这意味着在特定区域中没有故障。
NoOFFaults
谢谢你
我想补充我的两分钱,而我喜欢NZ()的简单的语法,如果你寻求无故障性能,既ISNULL()和新西兰()应该有利于为NULL来避免: IIF(a.faultCount Is Null, 0, a.faultCount)。
IIF(a.faultCount Is Null, 0, a.faultCount)
请参阅此处的出色说明:http : //allenbrowne.com/QueryPerfIssue.html
另外,如果您的表位于SQL Server或Oracle中,则使用Nz()将强制在本地执行更多查询,从而对性能产生巨大影响。