reporting-services - 将列组中的总计显示为行
问题描述
我试图用 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 添加了一个新列,但我需要一个包含总数据的新行。
这可能吗?
解决方案
我认为不可能得到你想要的东西,因为据我所知,你不能跨列组合并单元格。但是,我们可以接近。
有两种方法可以做到这一点。
选项 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 的最终设计和输出。
设计视图
输出
推荐阅读
- html - 有没有办法在我的网页上添加一个链接,上面写着“现在打电话”,当它被按下时,它会直接调用whatsapp?
- c# - 请求被中止。无法为 HttpClient 创建 SSL/TLS 安全通道
- excel - 如何对数据进行分组并在excel中获取每组的计数?
- sql - 按函数分组适用于sql中的日期
- javascript - 合并分组的 2 对象数组,排除 JavaScript 上的重复项
- python - 由于 Pyppeteer 意外关闭,Python 程序在 aycnio 异常后挂起
- python - 自建模块不可调用
- file - 是否有文件服务器代理提供较少的磁盘空间保留并在其自身上提供常用文件
- java - 我正在尝试访问我传递的属性,但它给了我一个空指针异常
- python - Pandas. How do I find the 10 largest values in a column?