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

标签 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

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

最佳答案

您计算的字段错误。这样做,从外部连接表ESTAGIARIO(而不是从ESTAGIARIO)获取字段:

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

顺便说一句,count can never return null .

关于sql - 当 Count(*) 结果为 Null 时返回 1 而不是 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155025/

相关文章:

java - 使用 BufferedReader 类和 Integer.parseInt 计算 txt 文件中堆叠整数的平均值

php - MySQL:计算子级并获取父级行

mysql - 帮助计算具有多个条件的查询计数?

sql-server - SQL Server : Design question - stored records as rows vs as BLOB - NVARCHAR(MAX)

entity-framework - Entity Framework 和SQL Server 2012分页

mysql - 是否需要为所有重复的数据创建一个表?

java - JDBC 通过 PreparedStatement 中的 executeBatch 调用保证原子操作

sql-server - 在 SQL Server 中处理带空格的列名

mysql - 如何用 JOIN 重写这个语句,使其更快?

sql - 将 DataTable 传递给存储过程。有没有更好的办法?