【问题标题】:Conditional Aggregate Lookup - SSRS条件聚合查找 - SSRS
【发布时间】:2018-07-14 07:47:37
【问题描述】:

我有一个包含两个数据集的报告,按状态汇总未完成订单的数量和价值。我有一个“Back Order”列,它使用“Lookup”函数来引用第二个数据库,基于 Fields!IsBackorder.Value 是否返回 true。这适用于行级别,但我在聚合级别遇到了问题。

对于订单总数,此论坛有效:

=SUM(IIF(LOOKUP(Fields!SalesOrderID.Value, Fields!SalesOrderID.Value, Fields!IsBackorder.Value, "DstBackorders") = "TRUE",1,0))

但是,对于订单的总价值(“Fields!NetValue.Value”),这将返回 '#Error'

=SUM(IIF(LOOKUP(Fields!SalesOrderID.Value, Fields!SalesOrderID.Value, Fields!IsBackorder.Value, "DstBackorders") = "TRUE",Fields!NetValue.Value,0))

我尝试过自定义聚合函数,但没有找到任何可行的方法。我不确定我是如何得到这个错误的。

任何建议都会很有帮助。

谢谢,

Report Screenshot

【问题讨论】:

  • 只是一些想法...... NetValue 是什么数据类型?如果你用“1”替换 NetValue 会发生什么?如果这给了你一个计数,那么它可能是一个范围问题,在这种情况下你可能需要指定 NetValue 来自的数据集
  • 感谢 Alan,我使用 CDec() 函数将两个数字都转换为小数,并且成功了。

标签: reporting-services aggregate lookup


【解决方案1】:

语法看起来非常好,查找看起来也不错,请您检查一下您的 DataSet 中的以下内容:

  1. 是 Fields!NetValue.Value 在当前 DataSet 的范围内。
  2. 我们是否为 Fields!NetValue.Value 使用了正确的数据类型(可聚合的东西,例如 int、decimal 等)

【讨论】:

  • 谢谢。问题在于有两种数据类型 int 和 decimal。我使用 CDec() 函数将两个数字都转换为小数,这很有效。 =Sum(IIf(LOOKUP(Fields!SalesOrderID.Value, Fields!SalesOrderID.Value, Fields!IsBackorder.Value, "DstBackorders") = "TRUE", CDec(Fields!NetValue.Value) , CDec(0.00)))
猜你喜欢
  • 2018-07-09
  • 1970-01-01
  • 2015-10-21
  • 2023-03-16
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多