SSRS:动态创建新矩阵

SSRS: Dynamically Creating New Matrix

我的数据集中有以下格式(请参阅数据集布局屏幕截图)。

我需要此报告显示如下(请参阅报告布局屏幕截图),但有一点不同,但首先让我解释一下。

此报告是一份 "monthly" 报告,显示给定月份每一天的数据。我在报表布局屏幕截图中显示的是如果用户只为列 "Level!2!Sample" 选择一个可用值时报表的显示方式。因此换句话说,它不会像屏幕打印所示那样在该列中看到多个值,它只会包含一个不同的值。当只有一个项目可用时,此报告有效,但我需要允许多个选项。

我需要做的是能够为 "Level!2!Sample" 的多个值显示这样的数据,并且每次遇到新的 "Level!2!Sample" 时,它都会创建一个新矩阵,如下所示屏幕打印。因此,如果此列有四个不同的项目,我将在报告中显示四个不同的表格,每个表格显示 "Level!2!Sample" 列的给定不同值的数据。

我假设我需要使用 "Order By" 子句来让我的数据看起来正确: 订购方式 级别!2!样本, 名字!3!标题, 月!4!ReportMonth

但我不确定如何让SSRS在遇到新级别!2!样本记录时创建新矩阵。

我希望我的解释对我正在尝试做的事情有意义。任何帮助是极大的赞赏。

您不能像那样创建新矩阵,但还有其他选择。

简单选项:创建一个大矩阵,按 Level!2!Sample 分组,并在组之间进行分页。这显然意味着您将在示例场景中得到 4 页,这可能并不理想。

稍微简单的选项:

  1. 创建新报告
  2. 像您对当前报告所做的那样包括您的参数。
  3. 添加一个数据集(我们称它为 dsLoop),其中 returns 单个列和每个选定参数条目 1 条记录。这可能看起来像 SELECT DISTINCT Level!2!Sample FROM myTable WHERE Level!2!Sample IN(@myParameter).
  4. 添加单列单行的 table,并将其宽度设置为 report/page 的宽度。
  5. 将 table 的数据集设置为 dsLoop
  6. 在 table 的单元格中插入一个子报表并将子报表属性设置为指向您的原始报表
  7. 将子报表参数设置为 Level!2!Sample from your dataset。

备注:

一个。您可以从原始报告中删除可用值和相关数据集,因为它们不再需要(可选)

b.如果要在每个 tablix 之间添加间隙,可以在子报表的单元格之前或之后添加行。

基本上,您的新报表充当循环并为参数列表中的每个选定项目创建一行,每一行包含一个完整的子报表,其中包含传递给它的当前行的参数。

最终结果是您将获得每个选定条目的 'new' table。

希望这是有道理的。