【问题标题】:SSRS Report, Summing an Expression Column Contained in a Row GroupSSRS 报告,汇总行组中包含的表达式列
【发布时间】:2021-03-26 19:45:19
【问题描述】:

我遇到了一个我正在努力解决的情况。我有一个包含 2 个行组的表格的报告。数据集来自 SQL 视图。
材料类型是第一行组,材料宽度是子/秒。钻得更深,我有一些表达式计算“生产中的线性英尺”,最后是“材料吨”。行组将显示材料类型中包含的每种材料宽度的线性英尺和材料吨数。 我需要获得每种材料类型的材料总吨数(将材料类型内不同宽度的吨位相加)。下面是我计算材料吨数的表达式。任何帮助将不胜感激,因为我正在敲我的头。可能我没有提供足够的信息,所以如果需要,请要求更多说明。提前感谢任何可能查看的人。

=
(
((Fields!MATLDENSITY.Value)/2000)
*
(Sum(CDbl(Fields!USCATVLS_4.Value))*Fields!Quantity.Value)
*
((CDbl(Fields!USCATVLS_5.Value)/12)
*
(Fields!MATLTHICKNESS.Value/12)
)
)

【问题讨论】:

    标签: sql-server reporting-services report


    【解决方案1】:

    如果我理解正确,您有一个包含 2 个行组的 tablix。您有一个适用于内部组的表达式,但您需要对它的结果求和。

    您需要做的是指定表达式的范围(范围将是您的内部行组),然后对结果求和。

    举一个简单的通用例子……

    如果您在内部组 (myInnerGrp) 中有如下所示的表达式

    =SUM(Fields!qty.Value * Fields!cost.Value)
    

    由于上面的表达式中没有指定作用域,所以使用了当前作用域,这相当于将作用域指定为...

    =SUM(Fields!qty.Value * Fields!cost.Value, "myInnerGroup")
    

    所以,如果你想在外部组中求和 this 的结果,表达式将是

    =SUM(SUM(Fields!qty.Value * Fields!cost.Value, "myInnerGroup"))
    

    【讨论】:

    • 艾伦,谢谢您的回复。我不知道您可以像这样限定范围。但是,我仍然对此有疑问。通过按照您的建议进行操作,我最终在该单元格中得到了一些非常奇怪的值。如果您查看上面的代码框,您将看到“Textbox65”中包含的表达式。这可以正确计算每个宽度的材料吨数,但不能将它们相加。有没有一种方法可以调用“Textbox65”的值,而不必重新输入整个表达式并添加总和和范围?
    • 你应该可以做到 =SUM(ReportItems!Textbox65.Value) 。使用它有一些限制,但不要进入这些限制,先尝试一下。
    • textrun 'Textbox4.Paragraphs[0].TextRuns[0]' 的值表达式对报表项使用聚合函数。聚合函数只能用于页眉和页脚中包含的报表项。
    • 好的,所以你必须用范围重复表达式。我建议您首先在当前表达式(在同一行组中)旁边添加范围版本(没有外部 SUM() )。您必须将范围参数添加到所有聚合。从两个表达式中获得相同结果后,您可以将其移动到正确的组并添加外部 SUM()
    • 艾伦,再次感谢您的回复。我似乎无法弄清楚这一点。 SSRS 抱怨缺少')'。在上面的示例中,您显示了一个没有开头的额外右括号。它是否正确?似乎没有添加外部 SUM,它根本不喜欢这个,我太缺乏经验,无法理解这里发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2023-04-03
    • 1970-01-01
    • 2023-03-20
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多