2015-06-02 72 views
0

我有這樣的數據透視表,讓我空值的SUM(contar),我想將其更改爲0SQL - 更改NULL值設置爲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 

我試圖讓這種方式,但它給了我空值再次

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; 

我不明白什麼是錯的。謝謝

+3

與COALSCE嘗試 –

回答

2

您可以在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(*)