【问题标题】:How to report child groups total values separately in ssrs如何在 ssrs 中分别报告子组总值
【发布时间】:2018-07-09 01:29:01
【问题描述】:

我在 SSRS 2012 中有一份报告,其中包含两个组。

一个是父组,另一个是子组。两者都是行组,父组根据月份编号(1 到 12),子组根据数据集中名为“State”的列的值,范围从 1 到 5。在每个子组的末尾,有一个总行和报告末尾是所有子组的总和。

我需要在报告正文的开头(表格上方)或报告标题中显示每个子组的总和。有什么办法可以在 ssrs 中做到这一点?

顺便说一句,子组命名为“State”,父组命名为“Month”

我把这个表达式放在一个随机的文本框中:

iif(Fields!State.Value=1, "Sum(Fields!Amount.Value, "State")", "0") 

但它不起作用!

【问题讨论】:

    标签: sql-server reporting-services


    【解决方案1】:

    你的表达不起作用的原因有很多

    iif(Fields!State.Value=1, "Sum(Fields!Amount.Value, "State")", "0") 
    
    1. iif(Fields!State.Value=1) 在组内时,此语句引用当前行并针对组中的每一行进行评估。如果你把它放在一个随机的文本框中,你已经删除了行级上下文。您需要使用 First |最后 |最大 | Min 告诉 SSRS 您要评估哪一行的 State 字段
    2. 表达式的真实部分"Sum(Fields!Amount.Value, "State")" 不是任何语言的有效表达式。尽管您有正确数量的双引号,但它们不在正确的位置。当您的 if 语句为真时,您要求它评估的值是 Sum(Fields!Amount.Value,。但是,从那里到假表达式的逗号分隔符,您还有State")"。它应该用来做什么?
    3. 您不能将表达式嵌入为字符串值并对其进行评估。如果您的表达式是 IIF(Fields!State.Value=1, "John","0"),则真实值将返回 John。字符串文字只会被评估为字符串文字。解决双引号问题后,您的真实值将返回文本 "Sum(Fields!Amount.Value, "State"),它不会将其评估为表达式并返回总和整个州组或数据集的金额。

    可以从 tablix 中提取聚合并在报表的其他位置使用它,但这样做的充分理由很少,并且您必须处理一些问题以确保其准确无误。通过设计 SSRS 使其变得困难,因为很容易犯错误(不是 SSRS)并提供不正确的信息。我强烈建议您从一个简单的报告开始,并在组页眉/页脚中显示您的组总数。您还可以尝试嵌入对象(列表中的 tablix?),这样您就不必破解报表模型。

    【讨论】:

      【解决方案2】:

      您用于将总计添加到组的位置,它为您提供了两个总计选项。

      1. 之前添加总计
      2. 在之后添加总计

      您一定选择了Add Totals After 选项。

      1. 现在您可以简单地删除报表中的总计行。
      2. 选择Group Row并右键单击并选择Add Totals Before选项

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2017-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 1970-01-01
        相关资源
        最近更新 更多