【问题标题】:SSRS IIF Returning #ERRORSSRS IIF 返回 #ERROR
【发布时间】:2015-04-29 20:22:20
【问题描述】:

我的 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 中填写零支票?有点像它在第一个代码示例中的操作方式。 我需要底部的组名来提取正确的值。

【问题讨论】:

    标签: reporting-services ssrs-2008-r2


    【解决方案1】:

    当我看到这些时,我想做的第一件事就是简化它们,在这种情况下,有一个冗余需要被删除。没办法

     SUM(Fields!sales_Dollars.Value) > 0
    

    SUM(Fields!sales_Dollars.Value) <= 0
    

    可能同时为真,如果第一个为真,则第二个 Iif 语句总是评估为假,如果第一个为假,则跳过第二个 Iif 并返回值 0。因此,我们可以将其设置为 false 值,然后将第二个 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))
    

    希望通过第一条语句解决您遇到的语法问题。

    【讨论】:

    • 我需要在字段规范中包含组名才能获取该组的总数。 “SUM(Fields!sales_Dollars.Value)
    • 第一个 Iif 语句应该处理任何零值分母,甚至是 null,因为它永远不会评估为真。不,这个还有其他事情,检查数学你应该最终得到价值 0.02 美元(实际价值是 0.0154),因为它是一个货币列,所以应该显示。您能否从总行 COQ 单元格中粘贴公式(渲染时显示 #error 的那个)。因为看起来单元格公式正在工作,因为您的零值分母行正确地将 0 显示为 COQ。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2016-07-28
    相关资源
    最近更新 更多