SSRS- SUM函数如何忽略负值

时间:2014-01-07 07:23:49

标签: reporting-services sum report aggregate

我想在聚合函数中只添加正值,即sum。它应该只增加正值。我在做什么

  

SUM(((字段!MonthlyTarget.Value-字段!MonthToDateUnits.Value-字段!DUSales.Value)/(字段!RemaningDays.Value + 1)))

但现在我想忽略要添加的负值。

1 个答案:

答案 0 :(得分:0)

您需要将分子更改为IIf表达式,如果现有值为负,则返回0,即更改

Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value

类似于:

IIf(Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value > 0
  , Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value
  , 0)

根据基础数据类型,您可能需要强制转换以防止表达式中不同数据类型的聚合,因此#Error显示在报告中,即

IIf(Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value > 0
  , Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value
  , CDbl(0))

IIf(Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value > 0
  , Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value
  , CDec(0))

所以整个表达式就像:

SUM(((IIf(Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value > 0
      , Fields!MonthlyTarget.Value-Fields!MonthToDateUnits.Value-Fields!DUSales.Value
      , 0))/(Fields!RemaningDays.Value+1)))