Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssrs 2008 SSRS 2008-处理空值除法_Ssrs 2008_Reporting Services - Fatal编程技术网

Ssrs 2008 SSRS 2008-处理空值除法

Ssrs 2008 SSRS 2008-处理空值除法,ssrs-2008,reporting-services,Ssrs 2008,Reporting Services,我将字段_A除以字段_B。但问题是,有时字段_A为空(没有任何值)。我要怎么查呢 如果为Null,我想结果应该是0或Null。在表达式中使用IIF(内联If语句): =IIF(<Condition>,<TruePart>,<FalsePart>) =IIF(Field_A Is Nothing OR Field_B = 0, 0, Field_A/Field_B) =IIF(,,) =IIF(字段A为零或字段B=0,0,字段A/字段B) 通过这种方式,您

我将字段_A除以字段_B。但问题是,有时字段_A为空(没有任何值)。我要怎么查呢

如果为Null,我想结果应该是0或Null。

在表达式中使用IIF(内联If语句):

=IIF(<Condition>,<TruePart>,<FalsePart>)

=IIF(Field_A Is Nothing OR Field_B = 0, 0, Field_A/Field_B)
=IIF(,,)
=IIF(字段A为零或字段B=0,0,字段A/字段B)
通过这种方式,您可以确保字段A不为空,字段B不为零,以避免被零除的错误。

是的,我认为上面的“Jammie F”评论是正确的。如果字段B为0,则您将得到被零除的错误。 您可以使用的是:-


iif(Field_B=0,0,Field_A/Field_B)

最简单的方法是简单地向潜在的空值/零值添加一个非常小的值 因此:

=IIF(字段_A为零或字段_B=0,0,字段_A/(字段_B+.000001))

当值为null或零时,这仍将为0,但当分母为null或零时,将防止出现#错误

另外:注意确保你的类型是相同的;也就是说,如果字段_A的数据类型为十进制或双精度,请确保将少量.000001转换为CDec(.000001)


我发现确保表达式中的所有类型都相同是避免错误消息的关键

如果字段B有可能为0,则应避免此答案。SSRS IIF不执行短路评估。IIF的所有部分都会针对任何输入进行计算,因此如果字段_B为0,那么您将得到一个异常
#ERROR
。谢谢,我没有想到使用除以零的修复方法。答案已被编辑。我没有看到这里应用的除以0修复-它应该在/之后,而不是之前,例如,IIF条件检查字段_B的值为0。如果字段_B为零,则不执行计算。相反,它返回0。