2013-03-07 31 views
1

我在数据库中的以下表:SSRS 2012报告不断变化的行组和列组

A B C D 
    ---------------- 
    A1 B1 C1 D1 
    A2 B2 C2 D2 
    A3 B3 C3 D3 
    ... 
    ... 

我想允许用户生成的报告中,他可以选择两个表列,使用它们作为X和Y轴 - 即,在本例中,用户选择列A(具有值A1,A2和A3)作为矩阵中的细节,具有相应值的记录的计数在数据库中)和C(数据库中的havint值C1,C2,C3)分别为X和Y:

 C1 C2 C3 
----------------- 
A1 | 100 43 232 
A2 | 232 12 23 
A3 | 124 23 3434 
在该示例

,用户选择了B和d为X和Y,分别为:

 D1 D2 
-------------- 
B1 | 9 3 
B2 | 88 12 
B3 | 53 23 
B4 | 1 3 

其中在标题中的值分别是列A,B,C,d的不同值。

我不知道是否应该通过更改数据源,矩阵本身或可能是一个应该使用多维数据集解决的复杂问题来完成。

你将如何实现这一点?

感谢, 哈雷尔

回答

1

为了解决这个问题在报告级别,你可以设置基于表达式的,将允许这种情况出现。

我创建基于以下数据的一个示例:

enter image description here

我设置了两个参数来控制在所述行和列电平要使用的列:

enter image description here

对于行列组,我使用以下表达式进行分组,并显示在标题中。

行:

=Switch(Parameters!RowGroup.Value = "A", Fields!A.Value 
    , Parameters!RowGroup.Value = "B", Fields!B.Value 
    , Parameters!RowGroup.Value = "C", Fields!C.Value 
    , Parameters!RowGroup.Value = "D", Fields!D.Value 
    ) 

柱:

=Switch(Parameters!ColumnGroup.Value = "A", Fields!A.Value 
    , Parameters!ColumnGroup.Value = "B", Fields!B.Value 
    , Parameters!ColumnGroup.Value = "C", Fields!C.Value 
    , Parameters!ColumnGroup.Value = "D", Fields!D.Value 
    ) 

最后,只需添加CountRows()到细节文本框显示实体计数。报告看起来OK:

enter image description here enter image description here

所以不是太糟糕了在报表级别做。希望这可以大致了解所涉及的内容以及是否应该在数据集级别执行此操作。

+0

谢谢!我发现你的答案是我希望的确切解决方案:) – 2013-03-07 17:39:42