【问题标题】:Grouping Within a SSRS Expression在 SSRS 表达式中分组
【发布时间】:2016-09-13 17:42:37
【问题描述】:

我有一个 SSRS 表达式,我正在计算一个平均设置时间,但由于针对每个订单的多个且不同的过帐,我只需要获取唯一订单的平均设置时间。由于需要报告的其他部分包括所有过帐,因此我无法在除此单个表达式之外的任何地方对多个订单过帐进行分组或过滤。所以我有以下表达:

=AVG(iif(IsNumeric(Fields!Setup.Value), CDbl(Fields!Setup.Value), 0))

而且我基本上需要将上述表达式改写为...的正确语法...传入的伪代码...

=IIf((Fields!Order_Number.Value) is unique), AVG(iif(IsNumeric(Fields!Setup.Value), CDbl(Fields!Setup.Value), 0), else nothing)

我很确定 CountDistinct 子句可以解决这个问题,但我很难找到正确的语法。

【问题讨论】:

  • 您是否有权编辑数据源的查询?
  • 我愿意,我只能过滤主查询中的唯一 order_number,但我需要报告其他部分的所有单独条目。

标签: reporting-services expression grouping average iif


【解决方案1】:

添加一列以标识每个订单的唯一行:

ROW_NUMBER() OVER (PARTITION BY YourOrderID ORDER BY YourOrderID) as RowNumber

将计算字段添加到您的数据集。我们称之为“FilteredSetup”:

=IIf(Fields!RowNumber.Value = 1, Fields!Setup.Value, Nothing)

现在您可以在报告中引用这个新列,它会正确汇总:

=Sum(Fields!FilteredSetup.Value)

【讨论】:

  • 谢谢。那真的很接近。刚刚遇到关于尝试对无效的数据类型使用聚合函数的错误,因为数据存储为 nvarchar。轻松解决:=SUM(iif(IsNumeric(Fields!FilteredSetup.Value), CDbl(Fields!FilteredSetup.Value), 0))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多