【问题标题】:How can I use multiple iif in SSRS report?如何在 SSRS 报告中使用多个 iif?
【发布时间】:2020-11-04 01:32:41
【问题描述】:

我正在尝试使用 IIF 表达式...

=iif(sum(Fields!Actual.Value) > 0,"增加",

iif(sum(Fields!Actual.Value)

iif(sum(Fields!Actual.Value) = 0,"No Change","None")))

或 iif(isnothing(sum(Fields!Actual.Value)),"N/ap","None")

这给我一个错误。有没有其他解决方法?

【问题讨论】:

  • or 在里面做什么?上面的意思是返回一个标量值,而不是布尔值。另外,为什么要标记 SSRS 2012 *和 Reporting Services 2005(后者已不支持 5~ 年)。

标签: visual-studio reporting-services ssms ssrs-2012 reportingservices-2005


【解决方案1】:

在这种情况下,使用 SWITCH 会容易得多。 Switch 使用成对的表达式来评估和返回值。它更容易阅读,并且通常不需要嵌套。

所以对于你的例子,你可以做这样的事情。

=SWITCH (
         SUM(Fields!Actual.Value) > 0, "Increased",
         SUM(Fields!Actual.Value) < 0, "Decreased",
         SUM(Fields!Actual.Value) = 0, "No Change",
         ISNOTHING(SUM(Fields!Actual.Value)) , "N/ap",
         True, "None"
        )

最后的 True 基本上就像一个 ELSE,它捕获任何与前面的表达式不匹配的东西。

SWITCH 在找到第一个匹配项时停止,因此根据结果,您可能必须更改顺序或每次检查,但从这个开始,看看你会得到什么。

【讨论】:

  • 所以问题在于 Actual 列有 4 个不同的值,例如:100、-100、0.00,并将 null 替换为 N/ap。我如何在交换机中使用它?使用上面的 Switch 条件,它向我显示值 = 0 的“无变化”,并且“n/ap”列在增加、减少工作时显示没有变化。
  • 正如我所说,根据您可能需要更改顺序的值,请尝试将ISNOTHING(SUM(Fields!Actual.Value)) , "N/ap", 移动到SUM(Fields!Actual.Value) = 0, "No Change", 上方
  • 这是有道理的。还没有工作,我会尝试所有的选项。非常感谢,现在我了解了 switch 的工作原理。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多