SSRS 矩阵报表类似于带有行组和列组的表(tablix 结构)。SSRS 中的矩阵在交叉表报表中显示多个维度对应的数值时非常有用。这意味着矩阵单元格中的每个值都是行组和列组的汇总或聚合值。
表具有动态行(N 行)和固定列,而 SSRS 矩阵具有动态行和列。您可以在分组属性中启用钻取选项来展开和收缩列或行。
本文将通过实际示例向您展示如何在 SSRS (SQL Server Reporting Services) 中创建矩阵报表。
以下部分使用 Adventure Works DW 数据库 作为 数据源,并嵌入 数据集 来创建此 SSRS 矩阵报表。下面显示了我们为此矩阵报表使用的 SQL 命令。
SELECT Geo.[EnglishCountryRegionName] AS [Country]
,Geo.[StateProvinceName] AS [State] ,Geo.[City]
,Cust.FirstName +' '+ Cust.LastName AS [Full Name]
,Cust.EnglishEducation AS Education ,Cust.EnglishOccupation AS Occupation
,Cust.Gender,SUM(Cust.YearlyIncome) AS YearlyIncome,SUM(Fact.SalesAmount)AS SalesAmount
FROM DimCustomer AS Cust
INNER JOIN FactInternetSales AS Fact ON Cust.CustomerKey = Fact.CustomerKey
INNER JOIN [DimGeography] AS Geo ON Cust.GeographyKey = Geo.GeographyKey
GROUP BY Geo.[EnglishCountryRegionName] ,Geo.[StateProvinceName]
,Geo.[City], Cust.FirstName ,Cust.LastName ,Cust.EnglishEducation
,Cust.EnglishOccupation ,Cust.Gender
ORDER BY [Country]
在 SSRS 中创建不使用报表向导的矩阵
请参考 表报表 来了解基本报表的创建。然后,将矩阵报表从工具箱拖放到数据区域。

我们可以通过三种方式为 SSRS 矩阵报表分组添加列名
- 我们可以将列名从报表数据拖放到行分组或列分组列。
- 将列名从报表数据拖放到行分组窗格或列分组窗格。
- 当我们单击特定单元格时,它将打开一个上下文菜单,显示数据集中可用的列名。我们可以从列表中选择所需的列。这里我们将 StateColumn 选择为行分组项。

现在,我们将 Occupation Column 选择为列分组项。

这里,我们将 Sales Amount Column 选择为数据项。

注意:当您向数据列添加列时,报表服务器会自动聚合数据。如果要更改聚合函数,请转至 fx 表达式并相应地进行调整。
我们成功创建了第一个 SSRS 矩阵报表。如果您查看下面的屏幕截图,我们还进行了格式设置。
请参阅 设置文本框的字体和背景颜色 文章以了解它们。

单击“预览”按钮查看报表预览

在 SSRS 矩阵报表中为列分组添加页眉列
如果我们观察上面的屏幕截图,我们都知道 Clerical、Management、Manual 等是客户职业。如果我们不知道或想向用户提供有关每列的额外信息怎么办?在这些情况下,我们必须添加一行(包含列的页眉详细信息)。
要向 SSRS 矩阵报表添加新行,请选择报表的页眉列,然后右键单击它以打开上下文菜单。从菜单中,请选择插入行选项。这里我们有多个选项,它们的功能是
- 组内 - 向上:此选项在页眉列的顶部和组内插入新行。组内意味着页眉文本将在每一行重复
- 组内 - 向下:此选项将在页眉列下方和组内插入新行。
- 组外 - 向上:它在页眉列的顶部和组外插入新行。组外意味着页眉文本将是静态的,并且不会为每一行重复。

我们按照下图所示命名了页眉文本 Profession。

如果您看到下面的屏幕截图,我们已经完成了背景 格式设置。单击预览按钮可查看 SSRS 矩阵报表预览。
