即使使用iif()isothing()且= 0或= nothing

时间:2019-02-20 21:52:22

标签: reporting-services iif

我有一个简单的%更改公式,要在报告中实现...公式为(a-b)/ b。

问题有时是进入数据集中的b的值是空白/空...而且,SSRS似乎无法通过我正在使用的iif()语句来准确地实现这一点。而是每当报表呈现时,对于缺少公式中b的数据的任何行项目,我都会在该单元格中看到可怕的“错误”。我正在使用的单元格中的公式如下。这里有什么问题? SSRS为什么看不到sum(b) = nothingisnothing(sum(b))的评估结果为true?就像绕过公式的那一部分,然后继续进行数学运算,除以0并引发错误吗?

=iif( 
    isnothing(sum(Fields!BR_Quantity.Value))=true or sum(Fields!BR_Quantity.Value)=0 or sum(Fields!BR_Quantity.Value)=nothing,
    nothing,
    (sum(Fields!Full_Case_Quantity.Value)-sum(Fields!BR_Quantity.Value)) / sum(Fields!BR_Quantity.Value)
)

1 个答案:

答案 0 :(得分:0)

IIF函数同时计算表达式的TRUE和FALSE部分。

在分子和分母上使用单独的IIF:

=IIF(ISNOTHING(SUM(Fields!BR_Quantity.Value)) OR SUM(Fields!BR_Quantity.Value) = 0, 0, SUM(Fields!Full_Case_Quantity.Value) - SUM(Fields!BR_Quantity.Value)
/
 IIF(ISNOTHING(SUM(Fields!BR_Quantity.Value)) OR SUM(Fields!BR_Quantity.Value) = 0, 1, SUM(Fields!BR_Quantity.Value) )

这样,当分母为0或NULL时,结果表达式为0 / 1

金达la脚,但微软不会解决。