首页 > 解决方案 > 将列组中的总计显示为行

问题描述

我试图用 SSRS 获取列组的总数。这是我的报告:

+-----------+---------------------------+--------------------------+--------------+
|           |        John Doe           |       Brody Shaffer      | Kerry Morrow |
+-----------+-------------+-------------+-------------+------------+--------------+
|    Date   |  Project 1  |   Project 2 |  Project 3  | Project 5  |   Project 4  |
|  1/1/2020 |  $ 2.512,20 |  $ 3.230,00 |         $ 0 |        $ 0 |    $ 200,00  |
|  2/1/2020 |         $ 0 |         $ 0 | $ 35.504,00 | $ 5.200,30 |  $ 3.400,00  |
|  5/1/2020 |  $ 6.640,90 |    $ 987,00 |  $ 1.879,00 |        $ 0 |         $ 0  |
| 15/1/2020 |    $ 650,50 |         $ 0 |         $ 0 |        $ 0 |         $ 0  |
.
.
.

我想要这一行:

.
.
.
+-----------+-------------+-------------+-------------+------------+--------------+
| Total     |       $ 14.020,6          |        $ 42.583,3        |  $ 3.600,00  | 
+-----------+---------------------------+--------------------------+--------------+

行样本:

+---------------+-----------+-----------+-------------+
|   Customer    |    Date   | Project   |    Budget   |
+---------------+-----------+-----------+-------------+
|   John Doe    |  1/1/2020 | Project 1 |  $ 2.512,20 |
|   John Doe    |  1/1/2020 | Project 2 |  $ 3.230,00 |
|   John Doe    |  5/1/2020 | Project 1 |  $ 6.640,90 |
|   John Doe    |  5/1/2020 | Project 2 |    $ 987,00 |
|   John Doe    | 15/1/2020 | Project 1 |    $ 650,50 |
| Brody Shaffer |  2/1/2020 | Project 3 | $ 35.504,50 |
| Brody Shaffer |  2/1/2020 | Project 5 |  $ 5.200,30 |
| Brody Shaffer |  5/1/2020 | Project 3 |  $ 1.879,00 |
| Kerry Morrow  |  1/1/2020 | Project 4 |    $ 200,00 |
| Kerry Morrow  |  2/1/2020 | Project 4 |  $ 3.400,00 |
+---------------+-----------+-----------+-------------+

这是我的行组:

Date

这是我的专栏组:

Customer
  Project

当我为“客户组”添加“总计”时,Visual Studio 添加了一个新列,但我需要一个包含总数据的新行。

这可能吗?

标签: reporting-servicesssrs-tablixssrs-grouping

解决方案


我认为不可能得到你想要的东西,因为据我所知,你不能跨列组合并单元格。但是,我们可以接近。

有两种方法可以做到这一点。

选项 1:这是最简单的,但意味着总数出现在客户名称和项目名称之间。为此,只需右键单击“客户名称”单元格并执行“插入行 => 内行 - 下方”。将表达式简单地设置为

=Sum(Fields!Budget.Value)

选项 2:这需要更多的工作,但更接近您想要的输出。

首先,右键单击详细信息行中的单元格并执行“插入行 => 外部组 - 下方”在新行中,将单元格表达式设置为

=Sum(Fields!Budget.Value, "Customer")

我们包括范围“客户”,因此客户列组中的所有值都被求和,如果您省略此范围,那么它只会在每个项目中聚合。

如果您运行报告,您会看到您有重复的数字,但我们只想显示一个。我们可以通过检查项目列是否与客户组中的第一个项目列匹配来解决此问题。

将单元格表达式从我们刚刚设置的内容更改为此..

=IIF(
    FIRST(Fields!Project.Value) = FIRST(Fields!Project.Value, "Customer"),
    Sum(Fields!Budget.Value, "Customer"),
    Nothing
    )

现在我们只得到显示一次的值,但是单元格之间有一条可见的线,我们可以用类似的方式解决这个问题。

在单元格属性中,将其保留BorderStyle - Default为“Solid”,但将其更改BorderStyle - Left为“None”。接下来将BorderStyle - Right属性设置为以下表达式。

=IIF(
    FIRST(Fields!Project.Value) = FIRST(Fields!Project.Value, "Customer"),
    "None",
    "Solid"
    )

这样做是检查项目是否匹配客户中的第一个项目(即左列)并相应地设置边框样式。

最终输出应该是您想要的,除了总和预算值看起来会向左偏移。

我不确定是否有更好的解决方案...

这是显示选项 1 和 2 的最终设计和输出。

设计视图

在此处输入图像描述

输出

在此处输入图像描述


推荐阅读