【问题标题】:SQL Report Builder: Use aggregate function on ReportItemSQL Report Builder:在 ReportItem 上使用聚合函数
【发布时间】:2019-09-30 17:10:08
【问题描述】:

我为给定的单元格输入了以下表达式,它本质上是一个美元值除以一个数量以获得每加仑美分的值,标记为 Textbox41:

=ReportItems!Total_Gross_Profit2.Value / ReportItems!Gallon_Qty3.Value

我试图做的是将此表达式用于另一个单元格 =avg(ReportItems!Textbox41.Value) 中的 AVG 聚合,但出现错误:

textrun 的值表达式 'Textbox79.Paragraphs[0].TextRuns[0]' 使用聚合函数 报告项目。聚合函数只能用于报表项 包含在页眉和页脚中。

是否有一些限制不允许对 ReportItems 进行聚合?我也尝试了以下方法,但也没有用:

=AVG(ReportItems!Total_Gross_Profit2.Value / ReportItems!Gallon_Qty3.Value)

我哪里错了?

【问题讨论】:

    标签: sql-server reporting-services reportbuilder3.0


    【解决方案1】:

    关于你的问题:

    是否有一些限制不允许对 ReportItems 进行聚合?

    您在提供的错误消息中有您的答案。

    至于解决方案,您提供的信息很难给出准确的指导,但总的来说,开始考虑数据集字段而不是报表对象。如果您在矩阵或表格内部进行操作,并且“Total_Gross_Profit”和“Gallon_Qty_3”的值看起来与此类似:

    = ReportItems!ProfitsFromX.Value + ReportItems!ProfitsFromY.Value
    = ReportItems!GallonQtyA.Value + ReportItems!GallonQtyB.Value
    

    改为直接指向字段:

    = Fields!ProfitsFromX.Value + Fields!ProfitsFromY.Value
    = Fields!GallonQtyA.Value + Fields!GallonQtyB.Value
    

    这样,当涉及到聚合时,更清楚该怎么做:

    = avg(
          (Fields!ProfitsFromX.Value + Fields!ProfitsFromY.Value)
        / (Fields!GallonQtyA.Value + Fields!GallonQtyB.Value)
    )
    

    如果您觉得这很麻烦,您可以在数据集对象上创建计算字段,并在适当的地方引用这些字段。

    【讨论】:

    • 这确实有效。我不太确定为什么它不允许我使用报表对象进行聚合,但改为使用字段确实有效。谢谢!
    猜你喜欢
    • 2016-03-05
    • 2012-07-24
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多