我在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
的值设置为零,这意味着在特定区域中没有故障。谢谢
最佳答案
只需加上我的两分钱,尽管我喜欢Nz()的简单语法,但是如果您寻求无故障性能,则应避免使用IsNull()和NZ(),而推荐使用Is Null:
IIF(a.faultCount Is Null, 0, a.faultCount)
。
请参见此处的出色说明:http://allenbrowne.com/QueryPerfIssue.html
另外,如果您的表位于SQL Server或Oracle中,则使用Nz()将迫使更多查询在本地执行,从而对性能产生巨大影响。