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

时间:2017-05-24 09:56:42

标签: sql sql-server-2012 count

我的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

当" ESTAGIO.SK_ESTAGIO"表格中没有#34; ESTAGIARIO"它返回1而不是0,我已经尝试使用ISNULL(),NULLIF()和COALESCE(),但仍然无法找到上面的查询返回1时应该为0的问题。

1 个答案:

答案 0 :(得分: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

BTW,count can never return null