【问题标题】:SQL - Change NULL value to 0SQL - 将 NULL 值更改为 0
【发布时间】:2015-08-16 00:10:32
【问题描述】:

我有一个在 SUM(contar) 上为我提供空值的数据透视表,我想将它们更改为 0

SELECT Description AS Categoria,
       [ACS],
       [URO]
FROM
  (SELECT GroupType.Description,
          Speciality.Shortname,
          SUM(1) AS contar
   FROM DoctorEnterpriseDetails
   INNER JOIN Speciality ON DoctorEnterpriseDetails.Speciality1 = Speciality.SpecialityId
   INNER JOIN GroupType ON DoctorEnterpriseDetails.GroupId = GroupType.GroupId
   WHERE (DoctorEnterpriseDetails.EnterpriseId = 48)
   GROUP BY GroupType.Description,
            Speciality.Shortname) AS ps PIVOT (SUM(contar)
                                               FOR Shortname IN ([ACS],[URO])) pvt
ORDER BY description

我尝试过这种方式,但它再次给了我 Null 值

SELECT Description AS Categoria,
       [ACS],
       [URO]
FROM
  (SELECT GroupType.Description,
          Speciality.Shortname,
          GroupType.GroupId,
          (CASE WHEN (SUM(1) IS NULL) THEN 0 ELSE SUM(1) END) AS contar
   FROM DoctorEnterpriseDetails
   INNER JOIN Speciality ON DoctorEnterpriseDetails.Speciality1 = Speciality.SpecialityId
   INNER JOIN GroupType ON DoctorEnterpriseDetails.GroupId = GroupType.GroupId
   WHERE (DoctorEnterpriseDetails.EnterpriseId = 48)
   GROUP BY GroupType.Description,
            Speciality.Shortname,
            DoctorEnterpriseDetails.GroupId,
            GroupType.GroupId) AS ps PIVOT (SUM(contar)
                                            FOR Shortname IN ([ACS],[URO])) pvt
ORDER BY GroupId;

我不明白出了什么问题。谢谢

【问题讨论】:

    标签: sql null pivot


    【解决方案1】:

    您在 CASE 中定义别名,这是不允许的。此外,您可以混合使用数字和字符串:

    要么是

    CASE WHEN SUM(1) IS NULL THEN 0 ELSE SUM(1) END AS contador
    

    或

    COALESCE(SUM(1), 0) END AS contador
    

    顺便说一句,SUM(1) 与 COUNT(*) 相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 2019-10-03
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多