Reporting services 如何在报表生成器中将键/值对转换为表?

Reporting services 如何在报表生成器中将键/值对转换为表?,reporting-services,reportbuilder3.0,ssrs-2012,Reporting Services,Reportbuilder3.0,Ssrs 2012,传入数据(“Key”和“Value”是数据集中字段的实际名称): 报告中所需的输出: A B C - - - 1.0 2.0 3.0 4.0 5.0 6.0 迄今为止: “键”作为列组,“值”作为数据,行标题是正确的,但只有第一行数据出现在矩阵中 A B C - - - 1.0 2.0 3.0 (no other rows appear) 使用“值”作为行组,则矩阵中的数据都是稀疏的,因为它将任何字段中的每个更改都视为一个新组: A B

传入数据(“Key”和“Value”是数据集中字段的实际名称):

报告中所需的输出:

A    B    C
-    -    -
1.0  2.0  3.0
4.0  5.0  6.0
迄今为止:

“键”作为列组,“值”作为数据,行标题是正确的,但只有第一行数据出现在矩阵中

A   B   C
-   -   -
1.0 2.0 3.0
(no other rows appear)
使用“值”作为行组,则矩阵中的数据都是稀疏的,因为它将任何字段中的每个更改都视为一个新组:

A   B   C
-   -   -
1.0
    2.0
        3.0
4.0
    5.0
        6.0

向数据集中添加支持分组的列:

如果您的数据集是

select KEY, VALUE from TABLE
你可以把它换成

select KEY,
  VALUE,
  row_number() over (partition by KEY order by KEY) as RN 
from TABLE

然后在tablix中,您可以按RN分组,最好的方法是将数据集的输出更改为报告中所需的格式。最好的方法是使用PIVOT。尽量不要在源代码处更改,因为它服务于多个客户端。我认为Tablix的全部要点是它可以进行数据透视?Tablix应该允许您按列组中的键字段进行分组,同时将详细信息显示为行组。到目前为止,您尝试了什么?您的枢轴要求有点不寻常;数据透视通常涉及聚合数据,但我想您希望根据数据在表中的显示顺序保持数据的谨慎性?我不知道该怎么做,因为如果没有orderby,数据的行顺序就不可靠。您是否使用另一列进行订购?换句话说,SQL如何知道A=1.0应该与B=2.0在同一行,而不是B=5.0?@TabAlleman-我可以保证,从数据源中得出的顺序是正确的。要回答这个问题,在再次达到“a”键之前,所有内容都是一行。这是来自一个XML字典(Web服务调用的结果),不幸的是,SSRS正在扁平化结构并丢失一些层次结构信息,多亏了这个想法。我很犹豫是否在数据级别包含新的值,因为这会影响其他消费者,但如果没有更好的想法,我将标记为答案-谢谢!我是否有可能在报表生成器中将行数行为模拟为计算字段?(所以我可以不使用原始数据集?)就我现在所知,计算字段不支持分区上的rownum。
select KEY,
  VALUE,
  row_number() over (partition by KEY order by KEY) as RN 
from TABLE