SQL Report Builder:如何在 SSRS 中使用 WHERE 子句的功能?

SQL Report Builder: how to use functionality of WHERE clause inside SSRS?

我需要能够计算出每加仑值一美分。这可以通过 PRICE / GALLONS = CPG 轻松实现。

由于我显然不能在报告表达式功能中使用实际的 WHERE 子句,我能找到的最接近的方法是使用 IIF() 函数。但是,我不太明白我想看到什么。

表达式如下:

=IIF(Fields!gallons.Value=0,"-", Fields!GP.Value/Fields!gallons.Value)

如您所见,该报告适用于加仑值不为零的值。但是当涉及到 零的地方时,我得到了可怕的 #Error.

我该如何处理零? 请务必注意,我无法事先过滤掉 SQL 查询中的零,因为相关列必须存在才能进行其他计算。

SSRS 尝试评估 iif 条件的两边。因此,如果分子或分母为 0,则会出现错误!

您需要做的是使用函数 return 如果其中一个值是 0,则为 0。

转到报告属性 -> 代码,然后将以下代码粘贴到自定义代码部分

    '  Fix for divide by zero problem in VB

   Public Shared Function VarPercent(ByVal Standard As Decimal, ByVal Actual As Decimal) As Decimal
If Actual = 0 Then
Return 0
End If
If Standard = 0 Then
Return 0
End If
Return (Standard / Actual )
End Function

在您的报告中没有,如果您将两个值相除,请使用以下内容:

=Code.VarPercent(Fields!GP.Value,Fields!gallons.Value)

SSRS 就是这么笨。无论如何,您必须将除以零来修正:

=IIF(Fields!gallons.Value = 0,"-",
      Fields!GP.Value / IIF(Fields!gallons.Value = 0 , 1, Fields!gallons.Value))