在 Access 查询中的左外连接上为空记录重新调整值

Jud*_*ski 4 ms-access left-join

我已经尝试了在这种情况下返回值的所有公式,但不断收到错误消息,告诉我我的参数数量错误。这是我的查询:

SELECT [ER Root].[Network Indicator], 
[ER Root].[Prov Indicator], 
[ER Root].[Pos Indicator], 
[ER].[ER Visit]
FROM [ER Root] LEFT JOIN ER ON ([ER Root].[Network Indicator] = ER.[Network Flag]) AND ([ER Root].[Pos Indicator] = ER.[POS Indicator]) AND ([ER Root].[Prov Indicator] = ER.[Category Indicator]);
Run Code Online (Sandbox Code Playgroud)

我试过了:

SELECT [ER Root].[Network Indicator], 
[ER Root].[Prov Indicator], 
[ER Root].[Pos Indicator], 
ISNULL([ER].[ER Visit],0) AS "ER Visit"
FROM [ER Root] LEFT JOIN ER ON ([ER Root].[Network Indicator] = ER.[Network Flag]) AND ([ER Root].[Pos Indicator] = ER.[POS Indicator]) AND ([ER Root].[Prov Indicator] = ER.[Category Indicator
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Han*_*sUp 5

Access'ISNULL函数只接受一个参数并返回一个布尔值。

如果您想0[ER Visit]为 Null时返回,您可以Nz在从 Access 会话中运行的查询中使用。

SELECT Nz([ER Visit], 0) AS ER_Visit
Run Code Online (Sandbox Code Playgroud)

请注意,我用作ER_Visit别名是因为如果您尝试将字段名称重新用作别名,数据库引擎可能会抱怨“循环”引用。

如果您从 Access 会话外部(如从经典 ASP 或 .Net)运行查询,则该Nz功能将不可用。你可以这样做......

SELECT IIf([ER Visit] Is Null, 0, [ER Visit]) AS ER_Visit
Run Code Online (Sandbox Code Playgroud)