首页 > 解决方案 > 报表生成器多组矩阵计算

问题描述

我在 Report Builder 3.0(2014) 中使用矩阵向导创建了一个矩阵,具有 2 个行组、1 个列组和 2 个值。创建矩阵(包括总计和小计)后,我有一个看起来不错的矩阵。但是现在我想为每个列组(一行)再添加一个单元格,以存储以下值。

值 = 第 1 行组的总数 + 第 2 行组的总数 - 第 3 行组的总数 ...

构建的矩阵只显示了我不需要的每个行组的小计。

我想问我如何检索由矩阵本身计算的总数的结果,以及如何使用表达式根据它们的行组值来识别它们?而且,我如何为每个具有不同数据的列组执行此操作?

我试图在矩阵的设计视图中查看表达式,它只显示矩阵中每个单元格的 [SUM(MyField)](总计和小计)。

或者我应该使用另一个查询在另一个数据集上执行它吗?如果是这样,我应该使用什么查询以及如何将两个数据集放入一个矩阵中?

我的矩阵看起来像这样:

                                              Column Group
ROW GROUP 1  | ROW GROUP 2           | VALUE 1         | VALUE 2
Row Group 1  | Row Group 2           | [Sum(MyField)]  | [Sum(MyField)]
             | TOTAL OF ROW GROUP 1  | [Value]         | [Value]
             | ROW PLAN TO ADD       | [Value(0)+Value | [Value(0)+Value
                                     | (1)-Value(2)]   | (1)-Value(2)]

大写:列名,常量

[sqrbrkted]:计算值

正常:表内的数据

我是报表生成器的新手,如果我犯了任何错误,请见谅。如果我没有说清楚,请发表评论并让我知道。先感谢您。

编辑:我在下面的答案部分想出了一种方法来实现我的目的。如果有人有其他解决方案,请随时回答。谢谢。

标签: sql-serverreportbuilder3.0

解决方案


我通过更改我的 SQL 查询以创建另一个虚拟列来解决此问题,如果其各自的行组旨在扣除小计 (Value(2)),则显示负结果,并将其放在矩阵中。在表达式内部,我有另一个 IIF 语句将其转换回正数以用于显示目的。

SQL:

SELECT *, (CASE WHEN COL_B = 'VAL_2' THEN -COL_A ELSE COL_A END)AS DMY_COL_A FROM TABLE 

表达:

=IIF(Sum(Fields!DMY_COL_A.Value)<0,-Sum(Fields!DMY_COL_A.Value),Sum(Fields!DMY_COL_A.Value))

推荐阅读