SSRS IIF返回#ERROR

时间:2015-04-28 19:16:41

标签: reporting-services ssrs-2008-r2

我的SSRS报告中有一个表达式,用于计算多个组中的字段总数:

=IIf(SUM(Fields!sales_Dollars.Value) > 0 ,(SUM(Fields!Total_Defective__.Value)/IIF(SUM(Fields!sales_Dollars.Value) <= 0, 1, SUM(Fields!sales_Dollars.Value))),0)

我必须通过在声明中添加组来改变它:

=SUM(IIf(SUM(Fields!sales_Dollars.Value,"Item_Process_Group") > 0 ,(SUM(Fields!Total_Defective__.Value,"Item_Process_Group")/IIF(SUM(Fields!sales_Dollars.Value,"Item_Process_Group") <= 0, 1, SUM(Fields!sales_Dollars.Value,"Item_Process_Group"))),0))

问题是calc中其中一行的分母中有一个0,它不在子句中指定的组中。这会导致#error。 (至少我相信这是原因) 有没有办法在没有组的 Fields!sales_Dollars.Value 中检查零?有点像它在第一个代码示例中的表现。 我需要底部的组名来提取正确的值。

enter image description here

1 个答案:

答案 0 :(得分:2)

当我查看这些内容时,我首先要做的是简化它们,在这种情况下,需要删除冗余。

无法做到
 SUM(Fields!sales_Dollars.Value) > 0

SUM(Fields!sales_Dollars.Value) <= 0

同时可能为true,如果第一个Iif语句为真,则第二个Iif语句总是评估为false,如果第一个为假,则跳过第二个Iif并返回值0。所以,我们可以将它设置为第二个Iif的假值,最后得到:

=IIf(
  SUM(Fields!sales_Dollars.Value) > 0 
    ,(SUM(Fields!Total_Defective__.Value)/SUM(Fields!sales_Dollars.Value))
    ,0)

现在的问题是,如果销售美元价值为零,您是否想要做一些不同的事情。如果是这种情况,我们将零替换为如果第二个Iif语句被评估过的方程式:

=IIf(
  SUM(Fields!sales_Dollars.Value) > 0 
    ,(SUM(Fields!Total_Defective__.Value)/SUM(Fields!sales_Dollars.Value))
    ,SUM(Fields!Total_Defective__.Value))

希望通过第一个语句修复您遇到的语法问题。