2

我有一個數據集,可以來5列,列6,7,10,20甚至100。 至少有兩個是靜態的,其餘是動態的(正在做一個數據庫中存在根據表的比例)。數據集與動態列在Tablix /矩陣

如何在Reporting Services中實現此目的?

如何指定值爲動態的tablix字段?

最終的結果會是這樣:

| TITLE | ENUNCIATION | GOOD | VERY GOOD | BAD | VERY BAD | 
------------------------------------------------------------- 
| title 1 | question 1 | 5 |   3 | 1 |  0 | 
| title 2 | question 2 | 1 |   0 | 3 |  0 | 
| title 3 | question 3 | 0 |   0 | 1 |  0 | 

| TITLE | ENUNCIATION | 1 |  2  | 3 |  4 | 
------------------------------------------------------------- 
| title 1 | question 1 | 5 |   3 | 1 |  0 | 
| title 2 | question 2 | 1 |   0 | 3 |  0 | 
| title 3 | question 3 | 0 |   0 | 1 |  0 | 

注意:前兩個是靜態的,其餘的動態。

編輯:

我有這個表:

| ID_SCALE | ID_SCALE_ENTRY | NAME   | 
-------------------------------------------------- 
|  1  |  1  | GOOD  |  
|  1  |  2  | VERY GOOD | 
|  1  |  3  | BAD  | 
|  1  |  4  | VERY BAD |  
|  2  |  1  |  1  |  
|  2  |  2  |  2  | 
|  2  |  3  |  3  | 
|  2  |  4  |  4  | 
|  2  |  5  |  5  | 
|  2  |  6  |  6  | 
|  2  |  7  |  7  |  

編輯+注: 我想確切地顯示爲顯示在第一個表。問題是動態創建(好,很好,差,非常差,1,2,3,4)字段,並且不可能在Tablix中指定它。

舉例:當我想要數據集的字段值時,我把這個表達式字段!Good.value但現在想象它不是「好」,而是「1」字段! Good.value不再存在。結論,是一個帶有動態列的數據集。

回答

7

第一個 - 您應該使用Matrix。

- 要完成你想要的操作,在返回數據的方法中,必須返回至少三個數據字段。

例:

ColDescription - Column description 
StaticRowDescription - Row description/static column value 
Value - The real value for that column/row combination. 

明白了嗎?然後

你的矩陣應該是這樣的:

| Any Text    | [ColDescription] | 
| [StaticRowDescription] | [Value]   | 

編輯

忘了提,任何文字是我在這個例子中靜態列。您可以添加更多以符合您的需求。

--------------------------------------------- ------------------

一個例子,由於您的評論。

這是你將如何在你的回報方法實現:

假設你有一個靜態列Description和其他人(N)。

public IEnumerable<YourReturnClass> GetData(int param) 
{ 
    List<YourReturnClass> returnList = new List<YourReturnClass>(); 
    foreach (var row in allYourRows()) 
    { 
     foreach (var col in row.getColumns()) 
     { 
      returnList.add(new YourReturnClass(){ 
       StaticRowDescription = row.Description, 
       ColDescription = col.Description, 
       Value = myValueAccordingToCurrentColumnXRow() 
      }); 
     } 
    } 

    return returnList; 
} 

,並以此作爲你的矩陣:

| Description   | [ColDescription] | 
| [StaticRowDescription] | [Value]   | 

這樣,如果你在allYourRows()與說明「費用」和兩列名「氣」和「電」你將有一個排將此作爲矩陣結果:

| Description | Gas | Electricity | 
----------------------------------- 
| Expenses | 25 | 150   | 

更好?

這只是爲了解釋矩陣是如何工作的,你得到你的數據的方式可能不同於一個描述的。

報告(RDL)將是一樣的,唯一的變化就是如何獲取數據。如果你有一個這樣的表: (這將是一個表從數據庫(其中已存儲數據))

| RowDescription | DynamicColumnHeader | Value | 
------------------------------------------------ 
| Year 2013  | January    | 500 | 
| Year 2013  | February   | 850 | 
| Year 2013  | March    | 265 | 
| Year 2014  | February   | 965 | 

則您的報告是這樣的:

| Description | January | February | March| 
------------------------------------------- 
| Year 2013 | 500  | 850  | 265 | 
| Year 2014 |   | 965  |  | 

有想法嗎?

我重視的報表會是什麼樣子的圖像:

image

新的編輯:

| TITLE | ENUNCIATION | [NAME]       | 
------------------------------------------------------------- 
| [title] | [enunciation] | [ID_SCALE] OR [ID_SCALE_ENTRY] | 

*或乘法,總和,等等

根據最新評論編輯:

| TITLE | ENUNCIATION | [NAME]       | 
------------------------------------------------------------- 
| [title] | [enunciation] | [Count(NAME)]     | 

是嗎?

+0

我不明白第二部分。數據集返回您可以在表格中看到的內容。 – PookPook

+0

@ sh0rt6r是的,沒錯。你能解釋一下你不明白的東西嗎,或者讓我知道它是不是完整的東西,所以我可以嘗試精心設計? – eestein

+0

我不明白,因爲我要創建一個方法,並與此意圖。如果你可以指定更多。 – PookPook

0

你想要做的是知道作爲Pivot grid,這是爲了彙總數據,它包含一個行區域(標題和發表字段去),一個列區域(其中Q_Name字段去)和一個區域你想要總結的數據(在你的情況下,我相信一些東西)。

Pivot grid in DBxtra

你可以,當然,這樣做純粹的SQL,但它是一個惡夢做和維護,即使你有列的固定數量。如果你對這種方法更感興趣,你可以在這裏看看我的答案:How to make a report with count of type of cases in each month in Acess 2010

免責聲明:該屏幕截圖中的工具是DBxtra,這是我爲報告和商業智能而推廣的工具。

+0

問題是SSRS-2008數據集應該做些什麼,可以包含5個字段,可以包含7個字段,並且可能有不同的字段名稱。 – PookPook

+0

實際上,DBxtra可以在無需更改任何內容的情況下處理此問題,只要按照我在屏幕截圖中顯示的方式(它是動態的)對字段進行排序,那麼無論您的pivotgrid有多少個列都可以。如果您使用純SQL路由,則可能需要創建一個存儲過程來處理可變數量的列。 –

+0

問題解決了;) – PookPook