如何用 0(零)替换 NULL 值?

时间:2021-02-10 16:31:20

标签: sql

我刚刚被一些 SQL 查询困住了,我对此很陌生。 我在查询中使用了数据透视。

这是我的 SELECT 查询:

SELECT * 
FROM 
    (SELECT lg.domainNameID AS [Domain ID], COUNT(lg.domainNameID) AS [Fix Count]
     FROM tbl_ATT_Request r
     INNER JOIN tbl_ATT_Login lg ON lg.workdayID = r.workdayID
     WHERE r.requestCategoryID = 1 
     GROUP BY lg.domainNameID) slct

这是输出:

Domain | Fix Count
-------+-----------
1        1
2        1
4        2
5        1

这是我对 PIVOT 的查询。

SELECT * 
FROM 
    (SELECT lg.domainNameID AS [Domain ID], COUNT(lg.domainNameID) AS [Fix Count]
     FROM tbl_ATT_Request r
     INNER JOIN tbl_ATT_Login lg ON lg.workdayID = r.workdayID
     WHERE r.requestCategoryID = 1 
     GROUP BY lg.domainNameID) slct
PIVOT
    (SUM(slct.[Fix Count])
         FOR slct.[Domain ID] IN ([1],[2],[3],[4],[5])
    ) AS pvt

这是输出:

1 | 2 | 3    | 4 | 5
1   1   NULL   2   1

现在我的问题是如何用 0 替换 NULL 值。

1 个答案:

答案 0 :(得分:1)

只需使用条件聚合:

SELECT SUM(CASE WHEN Domain_Id = 1 THEN Fix_Count ELSE 0 END) as d_1,
       SUM(CASE WHEN Domain_Id = 2 THEN Fix_Count ELSE 0 END) as d_2,
       SUM(CASE WHEN Domain_Id = 3 THEN Fix_Count ELSE 0 END) as d_3,
       SUM(CASE WHEN Domain_Id = 4 THEN Fix_Count ELSE 0 END) as d_4,
       SUM(CASE WHEN Domain_Id = 5 THEN Fix_Count ELSE 0 END) as d_5       
FROM (SELECT lg.domainNameID AS Domain_ID, COUNT(*) AS Fix_Count
      FROM tbl_ATT_Request r JOIN
           tbl_ATT_Login lg
           ON lg.workdayID = r.workdayID
      WHERE r.requestCategoryID = 1
      GROUP BY lg.domainNameID
     ) d