报表生成器多组矩阵计算

时间:2019-05-03 06:39:59

标签: sql-server reportbuilder3.0

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

值=第一行组的总数+第二行组的总数-第三行组的总数...

建立的矩阵仅向我显示了我不需要的每个行组的小计。

我想问一下如何检索矩阵本身计算出的总计结果,以及如何使用表达式根据行组值识别它们?而且,对于具有不同数据的每个列组,我该怎么做?

我试图在矩阵的设计视图中查看表达式,它只显示矩阵中每个单元格(总计和小计)的[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]:计算值

正常:表中的数据

我是Report Builder的新手,如果遇到任何错误,我们深表歉意。如果我不清楚自己的意思,请发表评论并告诉我。先感谢您。

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

1 个答案:

答案 0 :(得分: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))