数据集在表矩阵/矩阵动态列(Dataset with dynamic columns in tabl

2019-08-06 08:18发布

我有一个数据集,可以配备5列,列6,7,10,20,或甚至100中的至少两个是静态的,其余的是动态的(是制造根据分至存在于数据库中的表)。

我怎样才能在Reporting Services实现这一点?

如何指定表矩阵的字段的值是动态的?

最终的结果会是这样的:

|   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)是动态创建的领域和因此不可能在表矩阵指定此。

举个例子:当我想要的数据集的字段值,我把这个表达式字段Good.value但现在想象一下,这是不是“好”,而是“1”领域! Good.value不再存在。 结论,是具有动态列的数据集。

Answer 1:

首先 -你应该用矩阵为。

-为了完成你想要的,在方法返回必须返回至少三个数据字段中的数据。

例如:

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         |

更好?

这仅仅是解释矩阵是如何工作的,你会得到你的数据可能会比一个不同的方式portraited。

该报告(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      |      |

上心?

我重视你的报告会是什么样子的图像:

新的编辑:

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

*或乘法,金额等..

编辑基于上次评论:

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

是不是这样?



Answer 2:

你想要做什么是知道作为一个支点网格 ,这是由汇总数据,它包含了一个行区域(如标题和吐字领域去),列区(凡Q_Name场去)和数据你的区域想总结(在你的情况下的东西计数我相信的)。

你可以,当然,这样做纯粹的SQL,但它是一个恶梦做和维护,即使你有列的固定数。 如果你对这种方法更感兴趣,你可以在这里看看我的答案: 如何使案件类型的计数报告每月在2010年接取 。

免责声明:在截图功能的工具是DBxtra ,一个工具,我促进报告和商业智能。



文章来源: Dataset with dynamic columns in tablix/matrix