Sql Report服务器Switch Expression没有给出正确的结果

时间:2012-05-14 11:14:06

标签: reporting-services ssrs-2008

您好我在文本框上有一个Switch表达式来给出一个百分比:

=Switch(

    Sum(Fields!TheoCostPriceValue.Value) = 0 AND 
    Sum(Fields!VarianceCostPriceValue.Value) = 0, 0,

    Sum(Fields!TheoCostPriceValue.Value) = 0 Or
        Sum(fields!VarianceCostPriceValue.Value) = 0, 1,

    Sum(Fields!VarianceCostPriceValue.Value) > 0 AND Sum(Fields!TheoCostPriceValue.Value) <> 0,
        ABS(Sum(Fields!VarianceCostPriceValue.Value) / Sum(Fields!TheoCostPriceValue.Value))

)

基本上,如果TheoCostPriceValue和VarianceCostPriceValue都为0,那么结果应为0,如果其中任何一个为0,则它​​应为1。 如果它们都不是0,我将检查VarianceCostPriceValue是正还是负,然后进行正确的计算。

我的问题是,当我的TheoCostPriceValue为0且VarianceCostPriceValue为2.35时,表达式返回#Error,而不是100%(这是我所期望的)。

我看不到我的开关有任何问题,但为什么它会返回#Error而不是100%?

我正在使用SQL Reporting Service 2008。

经过一些实验,我发现它只在添加后返回#Error:

ABS(Sum(Fields!VarianceCostPriceValue.Value) / Sum(Fields!TheoCostPriceValue.Value)),

在此之前它工作正常,如果我将其转换为0.5之类的值,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

好吧,这似乎有点奇怪,即使我正在检查TheoCostPriceValue是否不是0,它仍然似乎以某种方式传递。

我将表达式更新为:

=Switch(

Sum(Fields!TheoCostPriceValue.Value) = 0 AND Sum(Fields!VarianceCostPriceValue.Value) = 0,
    0,

Sum(Fields!TheoCostPriceValue.Value) = 0 OR Sum(Fields!VarianceCostPriceValue.Value) = 0,
    1,

Sum(Fields!VarianceCostPriceValue.Value) > 0 AND Sum(Fields!TheoCostPriceValue.Value) <> 0,
    ABS(Sum(Fields!VarianceCostPriceValue.Value) / 
    IIF(Sum(Fields!TheoCostPriceValue.Value) = 0, 
        1, 
        Sum(Fields!TheoCostPriceValue.Value))))

它开始工作了。

我不知道为什么会发生这种情况,但似乎确保TheoCostPriceValue无法修复它。