【问题标题】:IIF Condition in SSRSSSRS 中的 IIF 条件
【发布时间】:2018-10-30 15:09:17
【问题描述】:

我尝试使用 IIF 条件根据 SSRS 中的几个条件对金额求和。

但在执行报告时显示#error,因为它是多值参数。 以下是我使用的示例查询:

=IIF(Parameters!p_Colortypes.Value="-1" OR Parameters!p_Colortypes.Value = "2",SUM(Fields!amt.Value),"").

谁能建议我根据多值参数的值对金额求和的逻辑?

谢谢, 塞尔维.P

【问题讨论】:

  • 您正在尝试对不满足条件的字符串求和并清空。尝试将"" 替换为0 还要检查参数类型是否为文本,因为您要与文本进行比较,如果它是整数,请从"-1""2" 中删除引号
  • 底部的错误列表中是否有消息?我没有看到任何会导致错误的东西。金额是数值吗?
  • 其他用户将您的问题标记为低质量和需要改进。我重新措辞/格式化您的输入,使其更易于阅读/理解。请查看我的更改以确保它们反映您的意图。但我认为你的问题仍然无法回答。 现在应该edit你的问题,添加缺失的细节(见minimal reproducible example)。如果您对我有其他问题或反馈,请随时给我留言。
  • 嗨艾伦,我试过不加引号。那行不通。我会检查用 0 替换 "" 并告诉。谢谢
  • 汉诺威拳头,没有错误信息。 #error 在结果集中返回。谢谢。

标签: reporting-services iif


【解决方案1】:

因为没有足够的代表,我无法发表评论。

艾伦的评论几乎总结了我的建议:

尝试将 "" 替换为 0 还要检查参数类型是否为文本,因为您要与文本进行比较,如果它是整数,请从 "-1" 和 "2" 中删除引号

IIF 语句需要为逻辑中的每个潜在结果使用相同的数据类型,因为结果集中的每一行都需要是相同的数据类型(很像 T-SQL 中的 case 语句)。

不过,我要补充的是,如果它不起作用,您可以尝试将 SUM 移到 IIF 之外:

=SUM(IIF(Parameters!p_Colortypes.Value=-1 OR Parameters!p_Colortypes.Value = 2,Fields!amt.Value,0))

我冒昧地使用了代码,并假设您使用的是数值。

关于这篇文章的更多信息可能会有所帮助:

Carrying out a SUMIF like operation using SQL Server Report Builder

【讨论】:

  • 感谢漫画约翰。我在查询中发现了问题。我们使用的逻辑非常完美。问题是参数是多值参数。因此,如果我选择多个值,则不是总结。例如,我需要红色的总量。我在颜色参数选择中选择红色和橙色。现在它应该只显示红色的总数量,而它正在显示#error Msg。单独选择红色就可以解决问题。你能建议我一个解决这个问题的想法吗?谢谢
  • 在深入研究之后,似乎对于调用 IIF 时的多值参数,您必须在数组中指定要在 .Value 末尾使用 (X) 的值(其中X 是参数数组 s0 中的项目,第一个为 0,第二个为 1,依此类推): =SUM(IIF(Parameters!multi1.Value(0) = -1 OR Parameters!multi2.Value(0) = 2,1 ,0)) 可能有其他人可以提供帮助的更好的方法,但一种非常低效的方法是使用嵌套的 ifs 或其他一些逻辑来遍历参数数组中的每个项目,但我忍不住感觉可能有更好的方法
  • 如果您向下滚动到多值函数,此处的某些函数可能会有所帮助:docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/…
  • 感谢 Manga John 为解决问题所做的努力。您建议的方法都很好。使用字段代替参数解决问题。比如,IIF(Fields!colors.value="Red",Sum(amt),0)。
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多