我在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))))
答案 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