【问题标题】:Replacing empty values with zeros用零替换空值
【发布时间】:2014-10-23 10:01:01
【问题描述】:

我知道这个问题已经被问过很多次了,但是按照以前的解决方案我仍然无法解决这个问题:

我有一个 SSRS (2008R2) 报告,它以矩阵形式显示数据。有一个水平列组包含可能存在或不存在的值:当值不存在时,我想用0 替换空单元格。目前报告呈现如下:

我希望那些空单元格中包含0。 单元格表达式设置为:

 =Sum(Fields!number.Value)

所以我尝试了

 =iif (IsNothing(Sum(Fields!number.Value)),0,Sum(Fields!number.Value))

=iif (IsNothing(Fields!number.Value),0,Sum(Fields!number.Value))

=iif (Sum(Fields!number.Value)>0,Sum(Fields!number.Value),0)

...但“空”单元格仍然存在。我确定我在做一些愚蠢的事情……但是什么?

编辑:为了更好地说明我的情况,我的查询产生的输出(在 SSMS 中)类似于:

File | outcomeID     | number
A    |    Outcome1   |   2
A    |    Outcome2   |   1
B    |    Outcome2   |   2
C    |    Outcome1   |   1
D    |    Outcome3   |   2

...这将在 SSRS 中产生以下结果:

File | Outcome1 | Outcome2  | Outcome3
 A   |    2     |     1     |
 B   |    2     |           |
 C   |    1     |           |
 D   |          |           |    2

使用列组:

即使我将表达式更改为简单:

=999

我结束了

File | Outcome1 | Outcome2  | Outcome3
 A   |    999   |     999   |
 B   |    999   |           |
 C   |    999   |           |
 D   |          |           |    999

...即很多空格。

EDIT2:我上传了一个非常小的示例 .rdl 文件 [已删除],使用上面的示例数据 - 它重现了问题

【问题讨论】:

  • 你能在你的查询中处理它吗?
  • @TabAlleman:不幸的是:(
  • 嗯,即使使用您的示例数据,=iif (IsNothing(Sum(Fields!number.Value)),0,Sum(Fields!number.Value)) 仍然适用于我。您对那些可能抑制零值的单元格有任何格式吗?当您使用报表中的数据集从头开始创建一个新的简单矩阵时,会发生什么情况?
  • 文本框是否设置为条件隐藏?
  • @pancho018:你是天才,我是白痴。我之前一直在摆弄隐藏值,但我忘记禁用它。我会在下面记下您的回答,谢谢!

标签: reporting-services ssrs-2008-r2


【解决方案1】:

我的第一个想法是更改存储过程,但由于我有一个类似的报告可以快速测试某些内容,所以我有了一个想法。

试试这个

=0+Sum(Fields!number.Value)

【讨论】:

    【解决方案2】:

    我倾向于使用以下内容(不过,在 SSRS 2005 上):=CInt(Fields!number.Value)。也可以使用其他转换,例如CDbl

    或者,但稍长一点,试试=IIf(Fields!number.Value Is Nothing, 0, Fields!number.Value)

    【讨论】:

    • 你试过没有 Sum() 吗?你为什么还要使用 Sum()?
    • 是的,Sum() 并没有什么不同。 Sum() 在水平列组中用于将多个值组合在一起。
    • 奇怪...您不能将原始查询用作子查询并执行以下操作:SELECT *, ISNULL(number, 0) AS number FROM (youroriginalquery)?
    • 当前值被水平分组和SUMmed 在一起;由于报告的编写方式,在查询中将它们组合在一起将涉及相当多的调整。令人沮丧的是,如此简单的事情却被证明如此困难!
    • 您的原始操作应该可以完成这项工作...您可以尝试根据包含一些 NULL 值的简单表创建一个新报告。看看你能不能做到这一点。然后再拍一张。
    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 2018-01-05
    • 2012-07-01
    • 2016-12-05
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多