SSRS公式或表达式将NaN更改为0

16

我正在使用以下表达式来计算百分比:

=Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name")

Days.Value的值显示为0,但在我的一些结果中,百分比列中不是读取0%,而是实际上读取NaN(非数字)。

有人知道我需要什么确切的表达式公式以及我应该将其粘贴到当前表达式的哪个位置,以便说“在显示NaN的地方,改为放置'0'?”

(见图像)enter image description here

7个回答

22

我之前尝试了上面的答案,但没有成功。这是对我有用的方法:

=IIF(Single.IsNAN(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name")), 0, Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"))

16

How about

=IIF(Fields!Days.Value > 0,Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),0)

1
我尝试了类似于这个的东西:=IIF(Sum(Fields!TotalPrice.Value)/Sum(Fields!Orders.Value) = 0, 0, Sum(Fields!TotalPrice.Value)/Sum(Fields!Orders.Value),但在一个我认为是货币的文本框中,给我带来了一些奇怪的结果。上面的答案完美地解决了这个问题。谢谢! - John Waclawski
这个解决方案仍然给了我相同的错误。我已经回答了这个问题,分享了对我有效的方法。 - hurleystylee

10

我在类似情况下使用了这个函数:

=REPLACE(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),"NaN","0")


5

这里有另一个选项。它应该解决问题,并且还能去掉 Infinite 的响应:

=val(replace(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),"NaN","0"))

3

尝试

=IIf(Fields!Days.Value Is Nothing Or Sum(Fields!Days.Value, "Date_month_name") Is Nothing, 0, Fields!Days.Value / Sum(Fields!Days.Value, "Date_month_name"))

3

我认为这是最简单且最好的方式:

=Switch(
Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "NaN",Nothing,
Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "Infinity",Nothing,
Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "-Infinity",Nothing
)

您也可以用0代替空值。


0

我曾经遇到过类似的问题,发现以下方法最简单。

=Iif(
Fields!Days.Value.Value <> 0 AND Sum(Fields!Days.Value, "Date_month_name") <> 0
, Fields!Days.Value.Value/Sum(Fields!Days.Value, "Date_month_name")
, 0
)

可能不是最好的解决方案,但是可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接