【问题标题】:Return 1 instead of 0 when Count(*) result is Null当 Count(*) 结果为 Null 时返回 1 而不是 0
【发布时间】:2017-05-24 09:56:42
【问题描述】:

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

【问题讨论】:

  • count() 将返回 0..n 从不为 NULL。

标签: sql sql-server-2012 count


【解决方案1】:

您计算了错误的字段。这样做,从外部连接表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

顺便说一句,count can never return null

【讨论】:

  • 哦,伙计.. 感谢您提供快速而有用的答案,它是如此明显,我看不到它xD 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2011-12-19
  • 2016-03-11
  • 1970-01-01
相关资源
最近更新 更多