簡體   English   中英

如何修復 SSRS 不將 NULL 計為值?

[英]How to fix SSRS does NOT count NULL as value?

我正在使用 SSRS 創建報告,我有很多部門,我需要計算他們的運行狀態總數。 這是我的表的結果

在此處輸入圖像描述 請注意,UNKNOWN 部門在表內顯示 NULL。 我硬編碼為“未知”——ISNULL(部門,“未知”)

但是,似乎 SSRS 不計算 NULL 個值。 我需要 UNKNOWN 行數,就像其他部門一樣 我該如何解決這個問題?

我認為您的問題來自查詢的編寫方式。 這是一個猜測(你沒有提供查詢)但我希望你做了這樣的事情:

/* Start Demo Data */
DECLARE @Departments TABLE (DepartmentID INT IDENTITY, Name NVARCHAR(50));
INSERT INTO @Departments (Name) VALUES
('Architect'),('Business Intelligence Analyst'),('Data Analyst'),
('Database'),('Information Technology'),('Technical Analyst');

DECLARE @Tickets TABLE (TicketID INT IDENTITY, CreateDateUTC DATETIME DEFAULT GETUTCDATE(), DepartmentID INT, Status NVARCHAR(50));
INSERT INTO @Tickets (DepartmentID, Status) VALUES
(1, 'Completed'),
(2, 'Completed'),(2, 'Completed'),
(3, 'Completed'),(3, 'Completed'),(3, 'Completed'),(3, 'Completed'),(3, 'Completed'),
(3, 'Failure'),(3, 'Failure'),(3, 'Running'),(3, 'Running'),(3, 'Failure'),
(4, 'Completed'),
(5, 'Completed'),(5, 'Completed'),(5, 'Failure'),(5, 'Running'),(5, 'Completed'),
(6, 'Completed'),
(7, 'Failure'),(7, 'Completed');
/* End Demo Data */
SELECT COALESCE(d.Name,'Unknown') AS Department, 
       COUNT(CASE WHEN t.Status = 'Completed' THEN 1 END) AS Completed,
       COUNT(CASE WHEN t.Status = 'Failure' THEN 1 END  ) AS Failure,
       COUNT(CASE WHEN t.Status = 'Running' THEN 1 END  ) AS Running,
       COUNT(t.Status) AS Total
  FROM @Departments d
    INNER JOIN @Tickets t
      ON t.DepartmentID = d.DepartmentID
 GROUP BY d.Name
 ORDER BY Department
Department                      Completed   Failure Running Total
-----------------------------------------------------------------
Architect                       1           0       0       1
Business Intelligence Analyst   2           0       0       2
Data Analyst                    5           3       2       10
Database                        1           0       0       1
Information Technology          3           1       1       5
Technical Analyst               1           0       0       1

這將在票證表中找到所有具有匹配部門 ID 的票證,但不會返回任何在 departmentID 列中具有不匹配值的票證,例如 NULL。

如果您將方法更改為:

SELECT COALESCE(d.Name,'Unknown') AS Department, 
       COUNT(CASE WHEN t.Status = 'Completed' THEN 1 END) AS Completed,
       COUNT(CASE WHEN t.Status = 'Failure' THEN 1 END  ) AS Failure,
       COUNT(CASE WHEN t.Status = 'Running' THEN 1 END  ) AS Running,
       COUNT(t.Status) AS Total
  FROM @Tickets t
    LEFT OUTER JOIN @Departments d
      ON t.DepartmentID = d.DepartmentID
 GROUP BY d.Name
 ORDER BY Department

您現在正在請求所有票證,並使用LEFT OUTER JOIN將其加入部門,這也允許返回票證中的不匹配行。 當 departmentID 列中存在不匹配(包括 NULL)值時,它仍然是結果集的一部分。

Department                      Completed   Failure Running Total
-----------------------------------------------------------------
Architect                       1           0       0       1
Business Intelligence Analyst   2           0       0       2
Data Analyst                    5           3       2       10
Database                        1           0       0       1
Information Technology          3           1       1       5
Technical Analyst               1           0       0       1
Unknown                         1           1       0       2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM