2013-03-07 84 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