当Count(*)结果为Null时,返回1而不是0

Lea*_*sta 4 sql count sql-server-2012

我从SQL Server获得的代码:

SELECT ESTAGIO.SK_ESTAGIO, ISNULL(count(ESTAGIO.SK_ESTAGIO), 0) as how_many
 from ESTAGIO
 left join ESTAGIARIO
 on ESTAGIARIO.SK_ESTAGIO = ESTAGIO.SK_ESTAGIO
 group by
    ESTAGIO.SK_ESTAGIO
Run Code Online (Sandbox Code Playgroud)

当“ ESTAGIARIO”表中不存在“ ESTAGIO.SK_ESTAGIO”时,它返回1而不是0,我已经尝试使用ISNULL(),NULLIF()和COALESCE(),但仍然找不到造成该问题的方法上面的查询在应为0时返回1。

tri*_*cot 5

您正在计算错误的字段。这样做是从外部联接表ESTAGIARIO(而不是ESTAGIO)中获取字段:

SELECT ESTAGIO.SK_ESTAGIO, Count(ESTAGIARIO.SK_ESTAGIO) as how_many
 from ESTAGIO
 left join ESTAGIARIO
 on ESTAGIARIO.SK_ESTAGIO = ESTAGIO.SK_ESTAGIO
 group by
    ESTAGIO.SK_ESTAGIO
Run Code Online (Sandbox Code Playgroud)

顺便说一句,count永远无法返回null