1

我正在处理带列分组的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 

我需要矩阵1和矩阵2的总和象下面这样:

ID  2012 2013 
1  170 240 

但我得到的结果是这样的:

ID  2012 2013 
1  410 410 

我已经应用于所有3个矩阵列分组又给表达得到总和矩阵3为:=Sum(Fields!amount1.Value, "dsmatrix1") + Sum(Fields!Tamount1.Value, "dsmatrix2")

请帮助我获得了一个解决方案。

谢谢!

+0

您是否可以控制生成的实际数据集,例如:如果它们来自数据库,那么您是否可以更新该代码? –

+0

嗨,我有一个参数为年份(如202,2013和用于列分组)。没有其他参数,我不确定是否需要在分组添加列时指定任何特定的内容。 – user2395176

回答

0

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

基于我所看到的,我猜测Matrix 1和Matrix 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 ... 

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

希望有帮助!