仅对筛选行中的值求和

时间:2014-07-24 13:27:57

标签: reporting-services reportbuilder3.0

我有一个Report Builder 3.0报告,它使用绑定到参数的组过滤器来显示数据。如何仅在可见行上对这些列求和?

我需要总结Fields!PY_Dollars.ValueFields!CY_Dollars.Value并计算py-cy和两者之间的差异

在PY值为零或为零的情况2中,我不需要总计py值或进行比较行。如果参数!Store.Value = 1

,我隐藏了那些

组过滤器[bool表达式= TRUE]:

=(
  (Parameters!Store.Value=2) 
  OR 
  (Parameters!Store.Value=1 AND (IsNothing(SUM(Fields!PY_Dollars.Value)) OR (SUM(Fields!PY_Dollars.Value)=0))) 
  OR
  (Parameters!Store.Value=0 AND SUM(Fields!PY_Dollars.Value)>0)
)

1 个答案:

答案 0 :(得分:0)

好的,我很确定我知道如何完成这项工作。 将CY美元值和PY美元值的总和移动到构建报告的sql查询中。我使用相同的过滤器组保持分组相同。这里显示了一些细微的变化:

=(
  (Parameters!Store.Value=2) 
  OR 
  (Parameters!Store.Value=1 AND (IsNothing(Fields!Sum_PY_Dollars.Value) OR (Fields!Sum_PY_Dollars.Value=0))) 
  OR
  (Parameters!Store.Value=0 AND Fields!Sum_PY_Dollars.Value>0)
)

要获得通过报告显示的正确CY值,表达式需要Switch()函数。

=SUM(
    Switch(
        (Parameters!Store.Value=2), (Fields!Sum_CY_Dollars.Value) ,  
        (Parameters!Store.Value=1 AND (IsNothing(Fields!Sum_PY_Dollars.Value) OR Fields!Sum_PY_Dollars.Value=0)), (Fields!Sum_CY_Dollars.Value) , 
        (Parameters!Store.Value=0 AND Fields!Sum_PY_Dollars.Value>0), (Fields!Sum_CY_Dollars.Value)
        )
    )

这基本上告诉它只对过滤器显示的内容求和。由于PY只需要在存在的地方求和,