本教程介绍如何基于示例销售数据创建基本矩阵报表。 矩阵具有嵌套行组和列组和相邻列组。 你还将了解如何设置列的格式和旋转文本。 下图显示了一个类似于要创建的报表。
本教程中创建的报表的增强版本作为示例 SQL Server 2014 报表生成器报表提供。 有关下载此示例报表和其他报表的详细信息,请参阅 报表生成器示例报表。
学习内容
本教程介绍如何:
其他可选步骤
完成本教程的估计时间:20 分钟。
要求
有关要求的详细信息,请参阅教程的先决条件(报表生成器)。
1.从新建表或矩阵向导创建矩阵报表和数据集
在报表生成器的 “入门 ”对话框中,选择共享数据源,创建嵌入数据集,然后在矩阵中显示数据。
注释
在本教程中,由于查询已经包含了数据值,因此它不需要外部数据源。 这样,查询就会非常长。 在业务环境中,查询不会包含数据。 本教程中的查询仅供学习使用。
创建新矩阵
依次单击“ 开始”、“ 程序”、“ Microsoft SQL Server 2012 报表生成器”,然后单击“ 报表生成器”。
注释
此时会显示“ 入门 ”对话框。 如果没有,请在“报表生成器”按钮中单击“ 新建”。
在左窗格中,确认已选中 “新建报表” 。
在右窗格中,单击“ 表”或“矩阵向导”。
在“ 选择数据集 ”页上,单击“ 创建数据集”。
单击 “下一步” 。
在“ 选择与数据源的连接 ”页上,选择现有数据源或浏览到报表服务器,然后选择数据源。 如果没有数据源可用,或者你无权访问报表服务器,则可以改用嵌入数据源。 有关创建嵌入数据源的详细信息,请参阅教程:创建基本表报表(报表生成器)。
单击 “下一步” 。
在 “设计查询 ”页上,单击“ 编辑为文本”。
复制并将以下查询粘贴到查询窗格中:
SELECT CAST('2009-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13747.25 AS money) AS Sales, 55 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(9248.15 AS money) As Sales, 37 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1800.00 AS money) AS Sales, 24 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1125.00 AS money) AS Sales, 15 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(742.50 AS money) AS Sales, 11 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1417.50 AS money) AS Sales, 21 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13497.30 AS money) AS Sales, 54 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(11997.60 AS money) AS Sales, 48 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(10247.95 AS money) As Sales, 41 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory, 'Tripod' as Product, CAST(1200.00 AS money) AS Sales, 16 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(2025.00 AS money) AS Sales, 27 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1425.00 AS money) AS Sales, 19 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(887.50 AS money) AS Sales, 13 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(607.50 AS money) AS Sales, 9 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1215.00 AS money) AS Sales, 18 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Central' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(10191.00 AS money) AS Sales, 79 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'North' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8772.00 AS money) AS Sales, 68 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'South' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales, 82 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Central' as Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(7218.10 AS money) AS Sales, 38 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'North' as Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'South' as Territory,'Digital' as Subcategory,'Slim Digital' as Product, CAST(9307.55 AS money) AS Sales, 49 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Central' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(3870.00 AS money) AS Sales, 30 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'North' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(5805.00 AS money) AS Sales, 45 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'South' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8643.00 AS money) AS Sales, 67 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Central' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(9877.40 AS money) AS Sales, 52 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'North' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(12536.70 AS money) AS Sales, 66 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'South' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(6648.25 AS money) AS Sales, 35 as Quantity单击 “下一步” 。
2. 从新建表或矩阵向导中组织数据并选择布局和样式
使用此向导可提供用于显示数据的起始设计。 此向导中的预览窗格可帮助您在完成矩阵设计之前展现对数据进行分组的结果。
将数据组织成组并选择布局和样式
在“排列字段”页上,将 Territory 从“可用字段”拖到“行组”中。
将 SalesDate 拖到 行组 中,并置于“区域”下方。
“行组”中字段的列出顺序定义组层次结构。 步骤 1 和 2 首先按地区组织字段的值,然后按照销售日期组织字段的值。
将 Subcategory 拖到“列组”中。
将“产品”拖动到 “列组”, 然后将其置于子类别下方。
列组中列出字段的顺序定义组层次结构。
步骤 3 和 4 首先按子类别组织字段的值,然后按照产品组织字段的值。
将 Sales 拖到“值”中。
将使用汇总数值字段的默认函数 Sum 函数对 Sales 进行汇总。
将 Quantity 拖到“值”中。
Quantity 使用 Sum 函数进行汇总。
步骤 5 和 6 指定要在矩阵数据单元中显示的数据。
单击 “下一步” 。
在“选择布局”页的“选项”下,确认已选择“显示小计和总计” 。
验证是否选择了“分块式,小计下方显示”。
确认选择了“展开/折叠组”选项。
单击 “下一步” 。
在“选择样式”页上的“样式”窗格中,选择 “石板”。
单击“完成”。
矩阵将添加到设计图面中。 “行组”窗格显示两个行组:“Territory”和“SalesDate”。 “列组”窗格显示两个列组:“Subcategory”和“Product”。 详细信息数据是数据集查询检索的所有数据。
单击 “运行” 以预览报表。
对于在特定日期销售的每个产品,该矩阵显示产品所属于的子类别以及销售地区。
3.设置数据格式
默认情况下,Sales 字段的汇总数据显示一般数字,而 SalesDate 字段则显示日期和时间信息。 设置“销售”字段的格式,将数字显示为货币,将 SalesDate 字段显示为仅显示日期。 切换“占位符样式”,将格式化的文本框和占位符文本显示为示例值。
设置字段格式
单击“ 设计 ”切换到设计视图。
按 Ctrl 键,然后选择包含
[Sum(Sales)]的九个单元。在“主文件夹”选项卡上的“数字”组中,单击“货币”。 单元格更改以显示格式化的货币。
如果区域设置为“英语(美国)”,则默认示例文本为 [ $12,345.00]。 如果未看到示例货币值,请单击“数字”组中的“占位符样式”,然后单击“示例值”。
单击包含
[SalesDate]的单元格。在 “数字 ”组中,从下拉列表中选择“ 日期”。
单元格会显示示例日期 [2000/1/31] 。 如果未看到示例日期,请单击“数字”组中的“占位符样式”,然后单击“示例值”。
单击 “运行” 以预览报表。
日期值仅显示日期,销售值显示为货币。
4.添加相邻列组
您可以在父子关系中将行组和列组嵌套,也可以在同级关系中并列这些组。
添加与子类别列组相邻的列组,复制单元格以填充新列组,然后使用表达式创建列组标题的值。
添加一个相邻的列组
单击“ 设计 ”返回到设计视图。
右击包含
[Subcategory]的单元格,选择 添加组,然后单击 相邻右侧。此时将打开 “Tablix 组” 对话框。
在 “分组依据 ”列表中,选择“SalesDate”,然后单击“ 确定”。
新列组将添加到子类别列组的左侧。
右键单击包含
[SalesDate],的新列组中的单元格,然后单击“ 表达式”。将以下表达式复制到表达式框。
=WeekdayName(DatePart("w",Fields!SalesDate.Value))该表达式从销售日期中提取工作日名称。 有关详细信息,请参阅表达式(报表生成器和 SSRS)。
右键单击包含总计的子类别列组中的单元格,然后单击“ 复制”。
右键单击紧邻包含在步骤 5 中创建的表达式的单元格下方的单元格,然后单击“ 粘贴”。
按 Ctrl 键。
在子类别组中,单击“销售”列标题及其下方的三个单元格,右键单击,然后单击“ 复制”。
将这四个单元粘贴到新列组中的四个空单元中。
单击 “运行” 以预览报表。
报表包括名为 Monday 和 Tuesday 的列。 数据集仅包含针对这两天的数据。
注释
如果数据包括了其他天,则报表也将包括这些天的相应列。 每列都有列标题Sales,以及按区域的销售总计。
5. 更改列宽
包含矩阵的报表通常在运行时水平和垂直展开。 如果计划将报表导出为用于打印报表的Microsoft Word 或 Adobe PDF 等格式,则控制水平扩展尤其重要。 如果报表跨多页水平展开,则打印报表将很难理解。 为了尽量缩小水平展开,您可以将列的大小调整为宽度仅供无需换行就可以显示数据。 您还可以重命名列,以便其标题适合显示数据所需的宽度。
重命名和调整列大小
单击“ 设计 ”返回到设计视图。
选择左侧最远数量列中的文本,然后键入 QTY。
列标题现在是 QTY。
对名为 Quantity 的其他列重复步骤 2。 有两个。
单击矩阵,使列和行句柄显示在矩阵的上方和旁边。
沿此表的上方和一侧显示的灰色条状物就是列控点和行控点。
若要将最远的 QTY 列调整到左侧,请指向列控点之间的线条,以便光标变为双箭头。 将列向左拖动,直到它宽 1/2 英寸。
列宽为 1/2 英寸,足以显示数量。
对于名为 QTY 的其他列,重复执行步骤 5。
单击 “运行” 以预览报表。
报表中包含数量的列现在命名为 QTY,列越窄。
6. 合并矩阵单元格
角区域是矩阵的左上角。 根据矩阵中行组和列组的数目,角区域中单元的数目将有所不同。 在本教程中内置的矩阵在其角区域中具有四个单元。 单元按两行和两列排列,反映行和列组层次结构的深度。 此报表中不使用这四个单元格,你将将它们合并为一个单元格。
合并矩阵单元格
单击“ 设计 ”返回到设计视图。
单击矩阵,使列和行句柄显示在矩阵的上方和旁边。
按住 Ctrl 键,然后选择四个角单元格。
右键单击单元格,然后单击“ 合并单元格”。
右键单击角单元格,然后单击 “文本框属性”。
单击“ 填充 ”选项卡。
单击填充颜色的“fx”按钮。
在表达式框中复制并粘贴以下表达式。
#96a4b2这是 Slate 样式中使用的灰色蓝色的 RGB 十六进制值。
单击 “确定” 。
单击 “运行” 以预览报表。
上角矩阵是单个单元格,其颜色与行组和列组单元格相同。
7. 添加报表头和报表标题
报表标题将出现在报表的顶部。 可以将报表标题放在报表标题中,或者报表不使用报表标题,则放在报表正文顶部的文本框中。 在本教程中,你将删除报告顶部的文本框,并在页眉中添加标题。
添加报表页眉和报表标题
单击“ 设计 ”返回到设计视图。
单击包含 “单击”添加标题的报表正文顶部的文本框,然后按 Delete 键。
在功能区的 “插入 ”选项卡上,单击“ 标题 ”,然后单击“ 添加页眉”。
页眉将添加到表体的顶部。
在“ 插入 ”选项卡上,单击 “文本框”,然后在报表标题内拖动文本框。 使文本框大约 6 英寸长、3/4 英寸高,并且将其放置于表头的左侧。
在文本框中,键入 按区域、子类别和天分类的销售。
选择键入的文本,右键单击,然后单击 “文本属性”。
注释
若要同时设置字符的格式,它们必须连续。
在“ 文本属性 ”对话框中,单击“ 字体”。
在 “字体” 列表中,选择 “时代新罗马”;在 大小 中选择 24 pt,在 颜色 中选择 栗色,在 样式 中选择 斜体。
单击 “确定” 。
单击 “运行” 以预览报表。
报表在表头中包含一个报表标题。
8. 保存报表
您可以将报表保存到报表服务器、SharePoint 库或本地计算机。
在本教程中,将报表保存到报表服务器。 如果无权访问报表服务器,请将报表保存到计算机。
在报表服务器上保存报表
在 “报表生成器 ”按钮中,单击“ 另存为”。
单击“ 最近使用的网站和服务器”。
选择或键入有权保存报表的报表服务器的名称。
此时将显示“正在连接到报表服务器”消息。 连接完成后,你将看到报表服务器管理员指定为默认报表位置的报表文件夹的内容。
在“名称”中,用“SalesByTerritorySubcategory”替换默认名称。
单击“ 保存”。
报表即已保存至报表服务器。 连接到的报表服务器的名称将显示在窗口底部的状态栏中。
在您的计算机上保存报告
在 “报表生成器 ”按钮中,单击“ 另存为”。
单击 “桌面”、“ 我的文档”或 “我的计算机”,然后浏览到要保存报表的文件夹。
在“名称”中,用“SalesByTerritorySubcategory”替换默认名称。
单击“ 保存”。
9. (可选) 旋转文本框 270 度
具有矩阵的报表在运行时可以垂直方式和水平方式展开。 通过垂直旋转文本框或者旋转 270 度,您可以节约水平空间。 然后,呈现的报表会变窄,如果导出为 Microsoft Word 等格式,则更有可能适合打印的页面。
文本框还可以将文本显示为竖排(从上到下)。 有关详细信息,请参阅文本框(报表生成器和 SSRS)。
旋转文本框 270 度
单击“ 设计 ”返回到设计视图。
单击包含
[Territory].的单元格在“属性”窗格中,找到 WritingMode 属性并在其下拉列表中选择 Rotate270。
如果未打开“属性”窗格,请单击功能区的 “视图 ”选项卡,然后选择“ 属性”。
验证 CanGrow 属性是否已设置为
True。将“区域”列调整为 1/2 英寸宽,并删除列标题。
单击 “运行” 以预览报表。
地区名称垂直书写,从下到上。 Territory 行组的高度由地区名称的长度决定。
后续步骤
本教程总结了如何创建矩阵报表的教程。 有关矩阵的详细信息,请参阅 表、矩阵和列表(报表生成器和 SSRS)、 矩阵(报表生成器和 SSRS)、 Tablix 数据区域(报表生成器和 SSRS)以及 Tablix 数据区域单元格、行和列(报表生成器)和 SSRS