Jan*_*anT 5 sql vb.net ms-access
我在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
Run Code Online (Sandbox Code Playgroud)
它给出了我无法解决的以下问题......
"查询表达式中的函数使用的参数数量错误'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()将强制在本地执行更多查询,从而对性能产生巨大影响.