Reporting Services - 水平而不是垂直显示一列的多个值
Reporting Services - show multiple values for a column horizontally rather than vertically
我有一份报告,其中行数据可以具有相同的数据,除了最后一列中的数据。只需将数据添加到 table 结果如下:
Column 1
Column 2
Column 3
Column 4
1
abc
1111
234345
1
def
2222
435656
1
def
2222
423233
1
xyz
1234
145423
我想像这样显示数据,如果一行的第 4 列值有多个值,则会水平添加额外的第 4 列:
Column 1
Column 2
Column 3
Column 4
Column 4
1
abc
1111
234345
1
def
2222
435656
423233
1
xyz
1234
145423
我已经尝试将父组添加到第 4 列,这接近我想要的,但是每一行都为第 4 列值指定了自己的列,所以它最终是这样的:
Column 1
Column 2
Column 3
Column 4
Column 4
Column 4
Column 4
1
abc
1111
234345
1
def
2222
435656
423233
1
xyz
1234
145423
等...
有没有办法实现我需要的布局?
您可以通过对数据集查询进行少量更改来执行此操作。
我在这里重新创建了您的示例数据 table 作为一个名为 `@t' 的 table 变量。然后我查询 table 并添加一个列,它为每个 Column1-3 组
中的每个 'Column4' 值提供了一个唯一索引
DECLARE @t TABLE (Column1 int, Column2 varchar(10), Column3 int, Column4 int)
INSERT INTO @t VALUES
(1, 'abc', 1111, 234345) ,
(1, 'def', 2222, 435656) ,
(1, 'def', 2222, 423233) ,
(1, 'xyz', 1234, 145423)
SELECT
*
, ROW_NUMBER() OVER(PARTITION BY Column1, Column2, Column3 ORDER BY Column4) as Col4Index
FROM @t
现在在您的报表中,添加一个具有一个行组的矩阵。这将在 Column1
、Column2
和 Column3
上分组
现在添加一个按 Col4Index
分组的列组
将前 3 列添加到矩阵中,确保它们都在单个行组中(只需先在组内添加其他列,然后 select 为每个列添加正确的字段。
将 Column4
字段放入 [Data] 占位符中,最后将此列的 header 设置为这样的表达式(可选)
="Column4_" & Fields!Col4Index.Value
报表设计如下所示
最终输出如下所示
我有一份报告,其中行数据可以具有相同的数据,除了最后一列中的数据。只需将数据添加到 table 结果如下:
Column 1 | Column 2 | Column 3 | Column 4 |
---|---|---|---|
1 | abc | 1111 | 234345 |
1 | def | 2222 | 435656 |
1 | def | 2222 | 423233 |
1 | xyz | 1234 | 145423 |
我想像这样显示数据,如果一行的第 4 列值有多个值,则会水平添加额外的第 4 列:
Column 1 | Column 2 | Column 3 | Column 4 | Column 4 |
---|---|---|---|---|
1 | abc | 1111 | 234345 | |
1 | def | 2222 | 435656 | 423233 |
1 | xyz | 1234 | 145423 |
我已经尝试将父组添加到第 4 列,这接近我想要的,但是每一行都为第 4 列值指定了自己的列,所以它最终是这样的:
Column 1 | Column 2 | Column 3 | Column 4 | Column 4 | Column 4 | Column 4 |
---|---|---|---|---|---|---|
1 | abc | 1111 | 234345 | |||
1 | def | 2222 | 435656 | 423233 | ||
1 | xyz | 1234 | 145423 |
等...
有没有办法实现我需要的布局?
您可以通过对数据集查询进行少量更改来执行此操作。
我在这里重新创建了您的示例数据 table 作为一个名为 `@t' 的 table 变量。然后我查询 table 并添加一个列,它为每个 Column1-3 组
中的每个 'Column4' 值提供了一个唯一索引DECLARE @t TABLE (Column1 int, Column2 varchar(10), Column3 int, Column4 int)
INSERT INTO @t VALUES
(1, 'abc', 1111, 234345) ,
(1, 'def', 2222, 435656) ,
(1, 'def', 2222, 423233) ,
(1, 'xyz', 1234, 145423)
SELECT
*
, ROW_NUMBER() OVER(PARTITION BY Column1, Column2, Column3 ORDER BY Column4) as Col4Index
FROM @t
现在在您的报表中,添加一个具有一个行组的矩阵。这将在 Column1
、Column2
和 Column3
现在添加一个按 Col4Index
将前 3 列添加到矩阵中,确保它们都在单个行组中(只需先在组内添加其他列,然后 select 为每个列添加正确的字段。
将 Column4
字段放入 [Data] 占位符中,最后将此列的 header 设置为这样的表达式(可选)
="Column4_" & Fields!Col4Index.Value
报表设计如下所示
最终输出如下所示