考虑以下数据来源:
declare @Test table (EmpId int, ProdId int, Sold int)
insert @Test (EmpId, ProdId, Sold) values (1, 1, 1)
insert @Test (EmpId, ProdId, Sold) values (1, 2, 2)
insert @Test (EmpId, ProdId, Sold) values (1, 3, 3)
insert @Test (EmpId, ProdId, Sold) values (1, 4, 4)
insert @Test (EmpId, ProdId, Sold) values (2, 1, 5)
insert @Test (EmpId, ProdId, Sold) values (2, 2, 6)
insert @Test (EmpId, ProdId, Sold) values (2, 3, 7)
insert @Test (EmpId, ProdId, Sold) values (2, 4, 8)
select * from @Test
我创建了一个Sql Server Reporting Services(SSRS)2008 R2报告,其中包含一个像这样配置的Matrix:
| | [ProdId] |
| [EmpId] | [Sum(Sold)] |
在预览模式下,渲染到以下内容(如预期):
| | 1 | 2 | 3 | 4 |
| 1 | 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 7 | 8 |
但是当我将其导出为CSV时,我得到了这个:
| EmpId | ProdId | Sold |
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 3 | 3 |
| 1 | 4 | 4 |
| 2 | 1 | 5 |
| 2 | 2 | 6 |
| 2 | 3 | 7 |
| 2 | 4 | 8 |
换句话说,当我导出到CSV时,我丢失了矩阵布局,每行数据都呈现为单行CSV。请注意,如果我导出到Excel,报告将按预期工作,因此到目前为止,此问题似乎仅限于CSV。我已经尝试将矩阵重组为一个表内的表,但也没有解决它。有什么建议吗?
答案 0 :(得分:4)
这是SSRS 2005和SSRS 2008之间报告呈现的重大变化的一部分。
我找到的唯一解决方案是:
导出到Excel,然后将Excel文档另存为CSV - 这会使Excel格式变得扁平化,并且需要设置分组,以便每行重复父组的值。但是,在开始导出到Excel时存在问题,例如,如果连续行包含相同的数据,则渲染器有时会省略数据,可以通过将受影响的列的“DataElementOutput”设置为True来停止,而不是“自动”允许渲染器猜测您认为哪些字段很重要。
以平台形式制作报告 - 这几乎打破了制作矩阵的重点,并且很痛苦,但您可以提前定义列,并且可以在查询中动态地执行,也可以在文本框值中使用大量表达式并设置动态列上的可见性。但要实现这一目标,可能需要创建数十个或数百个列来处理特定值的潜在外观。
请勿升级到2008 - 如果矩阵报告和导出格式对业务至关重要,那么在2008年重新创建功能确实没有好办法,坚持使用2005 SSRS是获得旧渲染的唯一可靠方法。
< / LI> 醇><强>资源强>:
答案 1 :(得分:0)
这是一种解决方法:
通过这种方式,您可以完全控制屏幕显示和CSV输出。
答案 2 :(得分:0)
这在SSRS 2016上有时有效: