Reporting services 用零替换空值

Reporting services 用零替换空值,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我知道这个问题以前被问过很多次,但按照以前的解决方案,我仍然无法解决这个问题: 我有一份SSRS(2008R2)报告,它以矩阵形式显示数据。有一个水平列组包含可能存在或可能不存在的值:当值不存在时,我想用0替换空单元格。当前,报告呈现为: 我希望这些空单元格中有0。 单元格表达式设置为: =Sum(Fields!number.Value) 所以我试过了 =iif (IsNothing(Sum(Fields!number.Value)),0,Sum(Fields!number.Value)

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

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

我希望这些空单元格中有
0
。 单元格表达式设置为:

 =Sum(Fields!number.Value)
所以我试过了

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

。。。但“空”细胞依然存在。我肯定我在做些傻事。。。但是什么呢

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

File | outcomeID     | number
A    |    Outcome1   |   2
A    |    Outcome2   |   1
B    |    Outcome2   |   2
C    |    Outcome1   |   1
D    |    Outcome3   |   2
。。。这将在SSR中产生以下结果:

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
。。。i、 e.大量空白


EDIT2:我上传了一个非常小的示例
.rdl
文件[REMOVED],使用上面的示例数据-它再现了问题我倾向于使用以下内容(在SSRS 2005上):
=CInt(Fields!number.Value)
。也可以使用其他转换,如
CDbl


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

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

试试这个

=0+Sum(Fields!number.Value)

你能在你的查询中处理它吗?@TabAlleman:不幸的是,不能:(嗯,即使使用你的示例数据,
=iif(没有任何内容(Sum(Fields!number.Value)),0,Sum(Fields!number.Value))
对我来说仍然有效。这些单元格上是否有任何格式可能会抑制零值?当您在报告中使用数据集从头开始创建一个新的简单矩阵时,会发生什么情况?该文本框是否设置为条件隐藏?@pancho018:您是天才,而我是白痴。我一直在坐立不安以前我一直在隐藏值,但我忘了禁用它。我相信你下面的答案,谢谢!你在没有Sum()的情况下尝试过吗?你为什么还要使用Sum()?是的,
Sum()
没有任何不同。
Sum()
正在水平列组中用于将多个值分组在一起。奇怪……您不能将原始查询用作子查询,并执行类似操作:SELECT*,ISNULL(数字,0)作为(原始查询)中的数字吗?当前值正在水平分组,并且
SUM
med在一起;由于报表的编写方式,在查询中将它们分组在一起将涉及大量的重新调整。令人沮丧的是,如此简单的事情证明是如此困难!您最初的操作应该可以完成这项工作…您可以尝试创建一个新报表,基于一个包含一些空值的简单表。看看你是否能做到这一点。然后再试试这个。
File | Outcome1 | Outcome2  | Outcome3
 A   |    999   |     999   |
 B   |    999   |           |
 C   |    999   |           |
 D   |          |           |    999
=0+Sum(Fields!number.Value)