首页 > 解决方案 > 处理运行总计中的空值

问题描述

我现在得到了几次帮助,每次遇到新问题时。我相信这将是这个特定项目的最后一个。下面的查询正在我正在创建的 SSRS 报告中使用,当 ReportNo 没有任何非生产时间时,它是完美的例外:这是我在特定日期有非生产时间时得到的结果:

Reportno    RUNNINGTOTAL
 14              10.5

但是,如果我有一个没有任何 NonProductive 的 ReportNo,我会得到:

Reportno    RUNNINGTOTAL

基本上我只需要它来找到这个总和的最后一个非空值。

SELECT r.*
FROM (SELECT Reportno,
             SUM(SUM((ElapsedTime))) OVER (PARTITION BY NonProductive ORDER BY REPORTNO) AS RUNNINGTOTAL
      FROM dbo.DailyOperations o
      WHERE NonProductive IN (1) and WellID = 'ZCQ-5' AND JobID = 'Original'  
      GROUP BY ReportNo, NonProductive
     ) r
WHERE r.ReportNo = 14
ORDER BY ReportNo;

我尝试更改 Sum,Sum(MAX) 我也尝试了 SUM(CASE WHEN DailyOperations.Nonproductive = 1 THEN DailyOperations.ElapsedTime ELSE 0 END)。我知道不仅仅是 Else 0,但我想不通。

标签: sqlreporting-services

解决方案


你为什么要做一个汇总?

SELECT SUM(ElapsedTime) AS RUNNINGTOTAL
FROM dbo.DailyOperations o
WHERE NonProductive IN (1) AND
      WellID = 'ZCQ-5' AND
      JobID = 'Original' AND
      ReportNo <= 14

推荐阅读