【问题标题】:Cannot directly count Nulls in SSMS无法直接计算 SSMS 中的 Nulls
【发布时间】:2016-06-16 15:24:17
【问题描述】:

我正在尝试使用 COUNT 和 WHERE 子句计算列中的空值数。当 Attr_620_Lookup 的表中有空值时,此查询的结果返回计数 0。我可以计算所有行并减去 IS NOT NULL.. 但是有没有办法直接计算空值?

SELECT Attr_616 AS Location, COUNT(Attr_620_Lookup)
FROM dbo.AttributesDenormalized AS ad
WHERE (Attr_620_Lookup IS NULL)
GROUP BY Attr_616

【问题讨论】:

    标签: sql tsql count null


    【解决方案1】:

    当您在COUNT 中指定表达式时,它将计算非空值。只需改用COUNT(*)

    SELECT Attr_616 AS Location, COUNT(*)
    FROM dbo.AttributesDenormalized AS ad
    WHERE (Attr_620_Lookup IS NULL)
    GROUP BY Attr_616
    

    【讨论】:

      【解决方案2】:

      除了@DStanley 提到的之外,您还可以使用带有 SUM 的 case 语句:

      SELECT SUM(CASE WHEN MyField IS NULL THEN 1 ELSE 0 END) AS TheSum
      FROM TheTable
      

      如果您正在处理 NULLS 和 NON NULLS,那就太好了,但是,您的 WHERE 子句特别要求 NULL...这意味着我的 case 语句有点多余,因为您已经说过 ...WHERE MyField IS NULL

      【讨论】:

      • 或类似的行:SELECT COUNT(CASE WHEN MyField IS NULL THEN 1 END) AS TheCount FROM TheTable。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多