首页 > 解决方案 > 如何为报表中动态创建的矩阵中的列添加标题?

问题描述

我有一个矩阵,它在运行时会创建 3 列,我无法根据客户的要求为这些动态创建的列添加标题,并且无法在线找到任何修复或示例。我希望将矩阵和文本框放入表格中可能会起作用,但会出现与下图相同的结果。这看似简单的事情是不可能的,还是我缺少一种解决方法?

设计视图

结果文本框显示在列之后

行和列组可见

标签: reporting-services

解决方案


如果每个 NTLH2 值都有 3 个 MTLH1 值,那么你可以做这样的事情......(因为你没有提供样本数据,我从样本 WideWorldImporters 数据库中生成了一些数据)。我的查询给了我 5 列和类似于下面的结果。

CustomerCategoryName  Qtr  Mnth  MnthName  OrderValue
Computer Store         1    1     Jan      10
Computer Store         1    2     Feb      12
Computer Store         1    3     Mar      15
Computer Store         2    4     Apr      20
Corporate              1    1     Jan      11
....

基本上我们每个季度结束 3 个月

然后我在报告中添加了一个矩阵控件,将其拖到CustomerCategoryName行、Mnth列、Qtr上方Mnth,使其成为父列,最后OrderValue成为数据“单元格”。

我实际上将列标题中的 Mnth 字段换成 MnthName 以使其更易于阅读,但列顺序仍按 Mnth(数字版本)排序。然后我将列标题居中以提高可读性。

最终的设计看起来像这样

在此处输入图像描述

如果我们运行报告,结果如下所示。

在此处输入图像描述

如您所见,我们有 4 个组,每个季度一个,每个组有 3 列。

如果要自定义季度名称,可以根据需要通过更改单元格中的表达式来实现。例如,如果我们希望所有季度都有“Q”在数字之前,除了我们想要一个特定字符串的第二季度,那么你可以使用类似的东西。

 =IIF(
    Fields!Qtr.Value = 2, 
    "Second Quarter",
    "Q" + Cstr(Fields!Qtr.Value)
    )

最终输出现在看起来像这样......

在此处输入图像描述

或者,您可以在 t-sql 中生成所有列标题,以便在我有 MnthName 的地方创建 Quartername 或类似名称。

希望这是有用的。如果没有,请发布示例数据和该示例数据的预期结果,我将修改答案。


推荐阅读