SSRS中的IIF条件并处理零

时间:2018-12-11 14:53:41

标签: reporting-services ssrs-2008 iif

我在SSRS中有一个相当复杂的公式,由于某种原因,即使我在公式中处理零,它在遇到零值时也会显示错误。有人可以建议如何解决此问题吗?

= iif(datepart(“ h”,Now())= 6,iif(SUM(Fields!PYRevenue.Value)= 0,0,((SUM(Fields!Revenue.Value)-SUM(Fields!PYRevenue.Value)-SUM(Fields!PYRevenue .Value))/ SUM(Fields!PYRevenue.Value))) ,iif(SUM(Fields!PYRevenue.Value)= 0,0,(SUM(Fields!Revenue.Value)/ SUM(Fields!PYRevenue.Value))))

2 个答案:

答案 0 :(得分:0)

对不起,我误读了您的公式,直到正确缩进为止。即使您已检查PYRevenue = 0,您也需要在两次出现“ /”之后都包含另一个IIF(),如下所示:

iif(     SUM(Fields!PYRevenue.Value)= 0,     0,     (         (SUM(Fields!Revenue.Value)-SUM(Fields!PYRevenue.Value)     )/ IIF(SUM(Fields!PYRevenue.Value)= 0,1,SUM(Fields!PYRevenue.Value))

SSRS计算所有表达式,因此即使您的父级逻辑阻止该块被命中,您也必须处理0值。

答案 1 :(得分:0)

道歉,赶紧回答...在我的手机上这样做。

即使SUM(PYRevenue)为零,即使最后一个表达式都不会被使用,它仍将被求值并给出除以零的错误。 2种解决方法。 对于不简单的事情,我个人使用SWITCH而不是IIF。

或者,您需要检查部门两侧的SUM(PYRevenue)。伪代码为=IIF(SUM(PYRevenue)=0,0,SUM(Revenue)) / IIF(SUM(PYRevenue)=0, 1, SUM(PYRevenue)),因此,如果总和PY为零,则执行0/1,否则执行收入/ pyvenvenue

相关问题