矩阵,相较于数据表示一维的数据,只能指定固定的数据列,来呈现动态的明细数据行,所以,它可以说是种二维的数据展现形式,让我们能够很容易地从数据行和数据集的交替中查看对应的汇总信息。像SQL Server中的行专列就可以利用矩阵来实现其功能。

一、打开 SQL Server Business Intelligence Development Studio,新建项目—>商业智能项目—> 报表服务器项目,命名为CH3

二、在报表文件夹下面,添加—>新建项。命名为PirvotTableTest,如图1和图2

图 1

图 2

三、添加数据源、添加数据集。这里不知道可以参考 : 【Reporting Services 报表开发】— 总结

数据库选择为:ASIAMINER_SSRS

这里数据集的SQL语句:

/****** SSMS 中 SelectTopNRows 命令的指令碼  ******/
SELECT
YEAR(TRX_DTE) AS TRX_YEAR,
DATEADD(dd,1-DAY(TRX_DTE),TRX_DTE) AS TRX_MONTH, C.PRODUCTSUBCATEGORY_KEY,
C.PRODUCTSUBCATEGORY_NAME,
D.PRODUCTCATEGORY_KEY,
D.PRODUCTCATEGORY_NAME,
F.COUNTRY_NAME,
SUM(SALES_AMT) AS SALES_AMT,
SUM(SALES_QTY) AS SALES_QTY
FROM dbo.FACT_SALES A
LEFT JOIN
dbo.DIM_PRODUCT B
ON A.PRODUCT_KEY=B.PRODUCT_KEY
LEFT JOIN
dbo.DIM_PRODUCTSUBCATEGORY C
ON B.PRODUCTSUBCATEGORY_KEY=C.PRODUCTSUBCATEGORY_KEY
LEFT JOIN
dbo.DIM_PRODUCTCATEGORY D
ON C.PRODUCTCATEGORY_KEY=D.PRODUCTCATEGORY_KEY
LEFT JOIN
dbo.DIM_STORE E
ON A.STORE_KEY=E.STORE_KEY
LEFT JOIN
dbo.DIM_REGION F
ON E.REGION_KEY=F.REGION_KEY
GROUP BY
YEAR(TRX_DTE) ,
DATEADD(dd,1-DAY(TRX_DTE),TRX_DTE) ,
C.PRODUCTSUBCATEGORY_KEY,
C.PRODUCTSUBCATEGORY_NAME,
D.PRODUCTCATEGORY_KEY,
D.PRODUCTCATEGORY_NAME,
F.COUNTRY_NAME

图 3

四、在报表主体部分,右击—>插入—>矩阵,如图4和图5

   

图4                                                                       图 5

五、拖放字段至矩阵报表,并在第一行地一列输入产品大类名称,如图6,7,8,9,10,11,12

图 6

选中第二列—>插入列—>组内部-右侧

     

图 7                                                                                                      图 8

然后在第二行第二列,聚合汇总,具体如下图:

图9

图10

图11

图12

选择 [Sum(SALES_AMT)]和[Sum(SALES_QTY)]的行,加入组外数据列,在新增的数据列加入表态说明,如下图13和图14

图13

图14

六、切换到阅览标签页,另外可使用格式化属性以调整矩阵的外观。如图15

图15

七、矩阵组的使用

在矩阵中添加子组

1.选中行组(PRODUCTCATEGORY_NAME),—>添加组—> 子组

图16

2.选择分组依据 [PRODUCTSUBCATEGORY_NAME]

图17

图18

3.切换到阅览标签页,另外可使用格式化属性以调整矩阵的外观,可以选择一行,按F4,BackgroundColor(背景色):LigthBlue(青蓝色)。BorderColor:Black.背景色一般和企业的logo颜色一致。

图19

4.数据列以两层的结构来显示产品大类与产品中类见的层次关系,不过这种显示模式当层数过对时会造成画面膨胀,进而让使用者不易阅读的缺点,在此介绍利用Tablix才能实现作作出的缩排式组报表(在报表生成器中称之为阶梯式层次),就能利用最经济的空间来显示层次关系。

首先,在“产品种类“子组(PRODUCTSUBCATEGORY_NAME),选择”添加总计“—>”早于“,此时,会在数据行上方加入总计行,如图20

图20

图21

接下来,将默认的“总计”替换为[PRODUCTCATEGORY_NAME](点击总计文本框,表达式,选择数据集的字段[PRODUCTCATEGORY_NAME]),

接下来,请将第一列删除,同时将[PRODUCTSUBCATEGORY_NAME]的”Padding“—>”Left“ 属性改为"12pt",即可完成缩排效果。

如图22和图23

图22

图23

预览效果如图24

图24

矩阵需要大家多多练习,就可以熟练掌握了。

参考书籍《SQL Server 2008 R2  Reporting Services 报表服务》

需要下载的数据库和SQL脚本:http://www.wsbookshow.com/bookshow/kjlts/jsj/kfzj/11395.html 的图书详情—>下载资源

【Reporting Services 报表开发】— 矩阵的使用的更多相关文章

  1. 【Reporting Services 报表开发】— 交互式报表

    我们知道,界面是人与系统间的对话方式,当使用者面对的是冷冰冰的界面,不但会造成使用者对于系统的热情减低,也会因为不便而产生诸多抱怨.尤其像报表时企业内几乎每日都会使用到的工具,因此,如何让使用者可以再 ...

  2. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...

  3. 【Reporting Services 报表开发】— 页码编列

    一.打开 SQL Server Business Intelligence Development Studio,新建项目—>商业智能项目—> 报表服务器项目,命名为CH4 二.在报表文件 ...

  4. 【Reporting Services 报表开发】— 数据表的使用

    一.打开 SQL Server Business Intelligence Development Studio,新建项目—>商业智能项目—> 报表服务器项目,命名为CH3 二.在报表文件 ...

  5. 【Reporting Services 报表开发】— 如何根据明细的行数实现分页(比如每隔5行分页)

    一.新建报表:对于初学者可以参考我前面的文章[Reporting Services 报表开发]— 总结 如图1: 图 1 二.选择 new_name文本框—>添加组—>选择行组中的父组.具 ...

  6. 【Reporting Services 报表开发】— 级联式参数设置

    级联式参数设置 再清楚的菜单,只要遇到选择项目一多的时候,难免会让人眼花缭乱,而找不到该选的选项.举例来说,像是零售业动辄万种商品品类,如果希望快速的选择到希望查看的产品品类时,就需要更有效率的搜索方 ...

  7. 【Reporting Services 报表开发】— 数据表存储格式修改

    文本框 Format属性:日期:输入d(表示简易日期).2007/5/1 0:00:00   输入d之后 变成 2007/5/1 金额:输入C0(表示货币),系统会根据设定值产生对应的货币符号,至于0 ...

  8. 【Reporting Services 报表开发】— 如何设置报表分页列标题每一页都显示

    一.打开已经开发好的报表ReportTest,选择列组下的高级模式—>选择行组的静态(会关联列标题订单编号),修改下面的属性: 1.Hidden:False 2.FixedData:True 3 ...

  9. 【Reporting Services 报表开发】— 总结

    一.环境搭建:安装SQL Server 2008 R2或SQL Server 2012过程略,这里我安装的是SQL Server 2012. 二.新建报表项目: 1.打开Visual Studio 2 ...

随机推荐

  1. 5、C#基础整理(for 语句经典习题--与 if 的嵌套)

    1.for循环最基本运用:小球每次落地后再弹起是以前的4/5,求第5次弹起后的高度 ; i < ; i++) { high = high*/; } Console.WriteLine(" ...

  2. ZOJ 3811

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5343 网络赛这水题没写过太伤了,赛后写了下1A. 当时钻牛角尖一定要用k次bf ...

  3. C,C++宏中#与##的讲解[转]

    MoreWindows 专注于Windows编程 C,C++宏中#与##的讲解 文中__FILE__与示例1可以参见<使用ANSI C and Microsoft C++中常用的预定义宏> ...

  4. 解决在MainPage中,点击实体返回按键不能退出的问题

    开发Windows Phone应用程序的时候,我在其它页面有写过这样的代码: private void btCancel_Click(object sender, EventArgs e) { Nav ...

  5. 第二个Sprint冲刺第四天

    讨论地点:宿舍 讨论成员:邵家文.李新.朱浩龙.陈俊金 今天的发展,探讨了统计功能的问题: 一.统计数据针对的是什么功能? 1.初衷是针对计时的填空题,至于其它功能统不统计,那要看开发的进度. 二.对 ...

  6. VC++编程中常用的字符串转换函数

    VC++编程中经常遇到不同编码编码的字符串之间需要转换的情况,以下简单提供几个不同编码字符串之间的转换函数: ANSI 字符串和Unicode字符串之间的转换 //Convert wide char ...

  7. Core Java Volume I — 4.5. Method Parameters

    4.5. Method ParametersLet us review the computer science terms that describe how parameters can be p ...

  8. Java-->多线程断点续传

    --> 在多线程复制的基础上加入断点续传的功能 -->Test 测试类 package com.dragon.java.multithreaddownload; import java.i ...

  9. ZOJ 3872--解题报告

    题目相关: 3872相关链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5520 Edward拥有一组数列. 其定义了Be ...

  10. 灰度图像的自动阈值分割(Otsu 法)(转载)

    灰度图像的自动阈值分割(Otsu 法) 机器视觉领域许多算法都要求先对图像进行二值化.这种二值化操作阈值的选取非常重要.阈值选取的不合适,可能得到的结果就毫无用处.今天就来讲讲一种自动计算阈值的方法. ...