在我的报告中,我试图在Tablix中获取一些基本数据。在此Tablix中,其中包含一个主摘要行和详细信息行。我想要做的是将细节放在子行中,但分成三列。
例如,我的tablix现在看起来像这样
Row11| Row12| Row13 |
1 | 5 | 4 |
| Column1 | Column2|
| 1 | 4 |
| 2 | 5 |
| 3 | 6 |
2 | 20 | 25 |
Column1 Column2 |
| 7 | 8 |
| 9 | 5 |
| 3 | 6 |
(这只是一个演示表。我的应用程序中的列数不一定是这个数字,无论如何都应该是无关紧要的)
我希望它看起来像:
Row11| Row12| Row13 |
1 | 5 | 4 |
| Column1 | Column2| Column1 | Column2| Column1 | Column2|
| 1 | 4 | 2 | 5 | 3 | 6 |
2 | 20 | 25 |
| Column1 | Column2| Column1 | Column2| Column1 | Column2|
| 7 | 8 | 9 | 5 | 3 | 6 |
我只想将详细信息表分成三列。我已经尝试了各种方法,但仍然存在。
这看起来很简单,但我坚持这一点。以前有这种情况吗?
如果您需要更多说明,请与我们联系。
答案 0 :(得分:1)
方法1:主tablix =具有两个细节行的三列。在第二个细节行中将三列合并在一起。为详细信息创建一个新的Tablix,并将其放在合并的详细信息单元格中。
方法2:主tablix =六列和两个细节行。在第1个细节行合并单元格1/2,3 / 4和5/6。
答案 1 :(得分:1)
创建三个明细表,调整每个行中显示的行,并将它们放在列表中。
添加table
报表项并将Column1和Column2数据添加到其中,将分组保留为详细信息。右键单击详细信息行,然后转到“行可见性”。
将其切换为“根据表达式显示或隐藏”,并添加以下表达式:
=IIF(RowNumber("tblFirstColumn") MOD 3 = 1, False, True)
这将只显示该表中的第一,第四,第七等记录。在第一个表旁边粘贴此表的两个副本,并在每个表上调整行可见性表达式:
=IIF(RowNumber("tblSecondColumn") MOD 3 = 2, False, True)
=IIF(RowNumber("tblThirdColumn") MOD 3 = 0, False, True)
接下来添加List
项。将列表的行分组更改为按行11分组,将每个行字段添加到此列表的顶部(作为文本框或未分组的表),并将三个详细信息表移动到列表的底部。
这应该比使用子报告更好。据我所知,在使用子报表时,将使用该子报表的每个实例查询数据集。在一个报告中使用所有设计,查询应该只运行一次。
答案 2 :(得分:1)
我不得不一次解决同样的问题,我这样做是通过"在TABLIX中插入TABLIX"。我相信,如果你按照下面的链接,shuold解决你想要的:
http://www.sqlcircuit.com/2012/03/ssrs-how-to-show-tablix-inside-tablix.html
我是否在我的报告中已经完成了增加嵌套Tablix的宽度以使其不影响主tablix上的宽度: 1)在插入的tablix上面的行中,我创建了一个列并将其保持为空,并将其下面的单元格合并到嵌套Tablix所在的位置。 2)现在你可以增加空列的大小(使边框不可见)到你希望插入的TABLIX的宽度。
希望这会有所帮助。
答案 3 :(得分:1)
对于它的价值(我看到你已经接受了答案),我认为如果你愿意的话,这可以主要在SQL中完成。
假设您的原始数据如下所示:
/-------------------------------------------\
| Row11 | Row12 | Row13 | Column1 | Column2 |
|-------+-------+-------+---------+---------|
| 1 | 5 | 4 | 1 | 4 |
| 1 | 5 | 4 | 2 | 5 |
| 1 | 5 | 4 | 3 | 6 |
| 2 | 20 | 25 | 3 | 6 |
| 2 | 20 | 25 | 7 | 8 |
| 2 | 20 | 25 | 9 | 5 |
\-------------------------------------------/
让我们创建演示数据来说明:
CREATE TABLE data (
Row11 INT,
Row12 INT,
Row13 INT,
Column1 INT,
Column2 INT
)
INSERT INTO data
SELECT 1,5,4,1,4
UNION
SELECT 1,5,4,2,5
UNION
SELECT 1,5,4,3,6
UNION
SELECT 2,20,25,7,8
UNION
SELECT 2,20,25,9,5
UNION
SELECT 2,20,25,3,6
您可以像这样聚合每个摘要和详细信息行:
SELECT DISTINCT d.Row11,
d.Row12,
d.Row13,
dfirst.Column1,
dfirst.Column2,
dsecond.Column1,
dsecond.Column2,
dthird.Column1,
dthird.Column2
FROM data d
CROSS APPLY
(
SELECT TOP 1 Column1, Column2
FROM data d1
WHERE d1.Row11 = d.Row11 AND d1.Row12 = d.Row12 AND d1.Row13 = d.Row13
ORDER BY 1,2
) dfirst
CROSS APPLY
(
SELECT Column1, Column2
FROM
(
SELECT Column1, Column2, ROW_NUMBER() OVER (ORDER BY Column1, Column2) AS rownumber
FROM data d1
WHERE d1.Row11 = d.Row11 AND d1.Row12 = d.Row12 AND d1.Row13 = d.Row13
) drows
WHERE rownumber = 2
) dsecond
CROSS APPLY
(
SELECT TOP 1 Column1, Column2
FROM data d1
WHERE d1.Row11 = d.Row11 AND d1.Row12 = d.Row12 AND d1.Row13 = d.Row13
ORDER BY 1 DESC,2 DESC
) dthird
结果如下:
/-----------------------------------------------------------------------------------\
| Row11 | Row12 | Row13 | Column1 | Column2 | Column1 | Column2 | Column1 | Column2 |
|-------+-------+-------+---------+---------+---------+---------+---------+---------|
| 1 | 5 | 4 | 1 | 4 | 2 | 5 | 3 | 6 |
| 2 | 20 | 25 | 3 | 6 | 7 | 8 | 9 | 5 |
\-----------------------------------------------------------------------------------/
在Row11
,Row12
,Row13
的SSRS报告表格中对此进行分组应该相对简单,将Row11
,{{{{ 1}}和Row12
进入Group Header行,并将所有6 Row13
和Column1
值的值放入详细信息行:
设计
结果:
注意:这仅适用于每个Column2
,Column1
,Column2
元组的3 {或更少} Row11
/ Row12
个值对。