Reporting services SSRS报告生成器差异%

Reporting services SSRS报告生成器差异%,reporting-services,reportbuilder,variance,Reporting Services,Reportbuilder,Variance,我试图计算差异百分比,并避免被0除的错误 以下代码适用于总体差异百分比 =IIf(Sum(Fields!Baseline.Value) = 0, 0, Sum(Fields!test.Value)) / IIf(Sum(Fields!Baseline.Value) = 0, 1, Sum(Fields!Baseline.Value)) 我现在试图将其限制在某个类别,并尝试使用下面的表达式 =IIF(Fields!Category.Value = "Resources Capital

我试图计算差异百分比,并避免被0除的错误

以下代码适用于总体差异百分比

=IIf(Sum(Fields!Baseline.Value) = 0, 0, Sum(Fields!test.Value))  / IIf(Sum(Fields!Baseline.Value) = 0, 1, Sum(Fields!Baseline.Value))
我现在试图将其限制在某个类别,并尝试使用下面的表达式

    =IIF(Fields!Category.Value = "Resources Capital ",
IIf(Sum(Fields!Baseline.Value) = 0, 0, Sum(Fields!test.Value))
  / IIf(Sum(Fields!Baseline.Value) = 0, 1, Sum(Fields!Baseline.Value)), 0)
=
IIf(
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0)) = 0, 
0, 
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!test.Value,0))
)
/ 
IIf(
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0)) = 0, 
1, 
Sum( IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0))
)

它似乎没有查看类别值,因为它继续给我提供总体差异。如果有任何帮助,我将不胜感激,因为我不知道从这里到哪里去

您是否尝试将附加条件移动到其他两个IIF表达式,而不是添加另一个:

=IIf(Sum(Fields!Baseline.Value) = 0 and Fields!Category.Value = "Resources Capital ", 0, Sum(Fields!test.Value))
  / IIf(Sum(Fields!Baseline.Value) and Fields!Category.Value = "Resources Capital " = 0, 1, Sum(Fields!Baseline.Value)), 0)

必须在表达式的每个和中使用Iif

    =IIF(Fields!Category.Value = "Resources Capital ",
IIf(Sum(Fields!Baseline.Value) = 0, 0, Sum(Fields!test.Value))
  / IIf(Sum(Fields!Baseline.Value) = 0, 1, Sum(Fields!Baseline.Value)), 0)
=
IIf(
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0)) = 0, 
0, 
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!test.Value,0))
)
/ 
IIf(
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0)) = 0, 
1, 
Sum( IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0))
)
另一种方法是使用如下自定义代码

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
  Return Nothing
Else
  Return Dividend/Divisor
End If
End Function 
然后你可以写下你的表达式,比如:

=Code.Divider(
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!test.Value,0)),
Sum(IIF(Fields!Category.Value = "Resources Capital",Fields!Baseline.Value,0))
)

最初尝试时收到错误,我将其更改为,
=IIf(Sum(Fields!Baseline.Value)=0和Fields!Category.Value=“Resources Capital”,0,Sum(Fields!test.Value))/IIf(Sum(Fields!Baseline.Value)=0和Fields!Category.Value=“Resources Capital”,1,Sum(Fields!Baseline.Value))
它仍然没有正确计算我的错误,总和应该在iif语句之外:总和(iif(Fields!Baseline.value=0和Fields!Category.value=“Resources Capital”,0,Fields!test.value))/sum(iif(Fields!Baseline.value=0和Fields!Category.value=“Resources Capital”,1,Fields!Baseline.value))它给了我一个错误。这看起来应该相当简单,但我可能不得不重新考虑它。我使用了
=sum(iif(Fields!Baseline.value=CDec(0)和Fields!Category.value=“Resources Capital”,CDec(0),Fields!test.value))/sum(iif(Fields!Baseline.value=CDec(0)和Fields!Category.value=“Resources Capital”,CDec(1),Fields!Baseline.value))
我没有收到错误,但我应该得到-188%,但得到了13%。