【问题标题】:To calculate sum of the fields in a matrix with column grouping使用列分组计算矩阵中的字段总和
【发布时间】:2013-09-26 06:50:43
【问题描述】:

我正在编写带有列分组的 ssrs 报告。以下是我的场景。

矩阵 1:

ID     2012  2013
1      20    40
1      30    50

Total  50    90

矩阵 2:

ID     2012  2013
1      60    70
1      60    80

Total  120   150

我需要 matrix1 和 matrix2 的总和,如下所示:

ID     2012  2013
1      170   240

但我得到的结果如下:

ID     2012  2013
1      410   410

我在所有 3 个矩阵中应用了列分组,并给出了获取矩阵 3 总和的表达式:=Sum(Fields!amount1.Value, "dsmatrix1") + Sum(Fields!Tamount1.Value, "dsmatrix2")

请帮我解决这个问题。

谢谢!

【问题讨论】:

  • 您对生成的实际数据集是否有任何控制权,例如如果它们来自数据库,您可以更新该代码吗?
  • 嗨,我有一个参数作为年份(如 202、2013 和用于列分组的参数)。没有其他参数,我不确定在添加带有分组的列时是否需要指定任何特定内容。

标签: reporting-services ssrs-2008 calculated-columns ssrs-grouping


【解决方案1】:

我想我知道发生了什么。如果我错了,请纠正我。

根据我所看到的,我猜测矩阵 1 和矩阵 2 各只有三个字段,一个 ID 字段、一个金额字段(即“amount1”或“Tamount1”)和一个年份字段。

您的列分组正在操纵数据的显示,以显示按年份划分的所有值。这在查看单个数据集中的数据时效果很好。但是,您的公式指定应添加 dsmatrix1 的 Amount1 字段和 dsmatrix2 的 Tamount1 字段中所有内容的总和。这不考虑列分组。您的表达式本质上是从两个数据集中获取所有值并将它们相加。

不了解您的查询结构或如何过滤数据的更多信息,我最好的猜测是您需要另一个 SQL 数据集。在这种情况下,您将从之前的两个数据集中获取查询,并使用“Union All”命令将它们合并。请注意,您将要使用 Union All 而不仅仅是 Union。更多信息在这里:What is the difference between UNION and UNION ALL?

您的最终结果应如下所示:

--This will be your dsmatrix1 query copied and pasted
Select ...

Union All

--This will be your dsmatrix2 query copied and pasted
Select ...

--Place one single Order by clause at the bottom
Order by ...

注意:要正确合并两个查询,您需要确保每个查询具有相同数量的字段,每个具有相同的数据类型。然后你可以将你的第三个矩阵指向新的数据集。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2015-07-05
    • 2018-07-24
    • 2012-08-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多