如果某些值可以是字符串“ - ”

时间:2016-07-26 22:32:34

标签: sql tsql reporting-services

而不是显示$ 0我显示“ - ”,这是字符串值。 但后来我需要计算“WP的总体百分比”,即'WrittenPremium'/“总书面保费”,如果没有$ amount,它将采用字符串“ - ”,因此我得到了一个错误。 我该如何解决?如果你看到“ - ”,我怎么能在我的表达中说,然后不要分开,只有0。

enter image description here

我正在尝试这样的事情:

=IIF(ReportItems!TotalWrittenPremium.Value<>0, ReportItems!Written_Premium.Value/(ReportItems!TotalWrittenPremium.Value ),0)

但仍然给我一个错误。

2 个答案:

答案 0 :(得分:1)

首先,引用ReportItems!Written_Premium.Value等报告项通常不是一个好习惯。以下是我的建议:

  1. 将数据库中的计算字段添加到删除短划线的位置。我们称这个例子为“Calculated_Premium”。表达式为:

    = CDec(IIf(Fields!Written_Premium.Value =' - ',0,Fields!Written_Premium.Value))

  2. 请参阅表格中的新栏目:

    书面保费

    =Fields!Calculated_Premium.Value

    总书面费用

    =Sum(Fields!Calculated_Premium.Value)

    总数百分比

    =Switch(Sum(Fields!Calculated_Premium.Value) = 0, 0 , True, Fields!Calculated_Premium.Value / Sum(Fields!Calculated_Premium.Value))

答案 1 :(得分:0)

可能 IIF 试图解决导致 DIV0 错误的等式的两个部分的问题。

=IIF(ReportItems!TotalWrittenPremium.Value <> 0, 
        ReportItems!Written_Premium.Value /
        IIF(ReportItems!TotalWrittenPremium.Value = 0, 1, ReportItems!TotalWrittenPremium.Value)
    , 0)

如果在Visual Studio中运行它,您可能会在错误列表中收到更好的错误消息。

Does the iif function compute both paths in SSRS or is it short-circuited?

divide by zero/null workaround in SSRS 2008 report