【问题标题】:SSRS 2005 Deal with Null return value - 0 rather than #ErrorSSRS 2005 处理 Null 返回值 - 0 而不是 #Error
【发布时间】:2013-01-04 17:44:57
【问题描述】:

作为 SSRS 2005 的新手,我不清楚如何做到这一点,并且未能将此处提供的其他答案的建议融入我的具体情况。

场景: 我正在按部门、性别等计算员工的平均年龄。在某些情况下,没有什么可计算的,在这种情况下,我更愿意返回零。在其当前形式中,我的表达式返回#Error。

表达式:

=Int(Avg(IIF(Fields!CustGender.Value = "F", CDec(Fields!Age.Value),Nothing),"ReportDataset"))

什么是正确的语法/逻辑来让该表达式返回 0 该部门没有女性员工?如果我将“Nothing”更改为零,那不会影响 Avg 函数的计算吗?

【问题讨论】:

  • SSRS 自 2005 年以来已经走过了漫长的道路。如果可以选择,请进行升级。

标签: reporting-services


【解决方案1】:

我还没有尝试过,但我认为如果您手动计算平均值,它应该可以工作。总和/计数:

=Int( SUM(
    IIF(
      Fields!CustGender.Value = "F",
      CDec(Fields!Age.Value),
      0
    ),"ReportDataset")
    / IIF(COUNT(
    IIF(
      Fields!CustGender.Value = "F",
      1,
      0
    ),"ReportDataset") = 0, 1,
    COUNT(
    IIF(
      Fields!CustGender.Value = "F",
      1,
      0
    ),"ReportDataset"))
    )

当然,如果“F”记录为零,这将引发错误。

【讨论】:

  • 杰米,感谢您对此进行尝试。您提供的代码显示语法错误。我试过修补它,但不能让错误消失。我知道您要做什么,但我看不出它在哪里解决了最初的问题。 Avg 函数工作得很好,但它有问题(如你所说)没有返回“F”记录。在这种情况下,我会收到 #Error 消息。
  • 新想法:也许我可以将您的“计数”想法与 IIF 结合起来,该 IIF 表示“如果计数为零,则返回 0,否则执行平均。我有时间再试试努力解决这个问题。
  • 修复了语法(几个错误的括号。)并添加了一个额外的 IIF 以在不存在“F”记录时处理除法。 (我认为您的初始数据永远不会返回好的数据:我认为这来自平均包含 nothings。
  • 哇!好的。这就是进步。我需要了解你正在做的事情,这样我才能把注意力集中在它上面。有趣的是,在某些情况下我得到零,而在其他情况下得到 #Error。我需要研究这个,看看为什么我现在得到错误。显然,您的方法已经解决了应该返回零的问题。谢谢杰米!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多