SSRS:按月汇总的动态表头实现-Matrix Control
来源:互联网 发布:c语言函数头文件格式 编辑:程序博客网 时间:2024/06/05 08:41
前言:
工具是为实现需求服务的。不同的工具提供了不同的方式,在选择过程中,选择最优最快的实现方式,这是一个成熟的码农必备的技能。本篇参考了CodeProject上的这篇文章:Using SSRS - Matrix Control to Generate Columns Dynamically
场景:SQL Server 2012 AdventureWorks2012 数据库。
目的:实现按照用户选择的时间区间按月显示每个产品销售数量和销售业绩。
数据准备:销售数据是按行按日期纵向排列在销售表Sales.SalesOrderHeader和Sales.SalesOrderDetail表中。
实现方式:1.可以使用PIVOT或者CASE WHEN动态SQL实现按月分类
2.使用SSRS的Matrix实现动态列的显示。
本篇主要介绍第二种实现方式。
数据准备:
USE AdventureWorks2012;GO/×DECLARE @StartDate DATETIME ='01/01/2008'DECLARE @EndDate DATETIME ='12/31/2008'×/SELECT P.ProductNumber , P.Name , CONVERT(CHAR(6),SOH.OrderDate,112) AS 'SaleMonth' , SUM(SOD.OrderQty) AS 'OrderQty' , SUM(SOD.LineTotal) AS 'SubTotal' FROM [Sales].[SalesOrderHeader] SOH INNER JOIN [Sales].[SalesOrderDetail] SOD ON SOD.SalesOrderID = SOH.SalesOrderID INNER JOIN [Production].[Product] P ON SOD.ProductID = P.ProductID WHERE SOH.[Status] =5 -- Shipped AND SOH.OrderDate BETWEEN @StartDate AND @EndDate GROUP BY P.ProductNumber , P.Name , CONVERT(CHAR(6),SOH.OrderDate,112) ORDER BY P.ProductNumber , P.Name , CONVERT(CHAR(6),SOH.OrderDate,112) ;
实现步骤:
1.建立新的项目工程DynamicalColumnSample。
2.建立共享数据源(Shared Data Source),AdventureWorks2012.rds。
3.建立共享数据集(Shared Data Set),dsProduct.rsd。
4.建立一张空报表DynamicalColumnSample.rdl。
5.拖动工具箱中的Textbox控件,建立表头信息和执行时间信息。
6.拖动工具箱中的Matrix控件,建立报表数据部分.如图所示。
7.在报表数据页中选择对应的dsProduct数据集,拖动数据集中的Name和ProductNumber,显示到行组合(Row Group)信息中,如图所示。
8.拖动dsProduct数据集中的SaleMonth列,显示到列组合(Column Group)中显示,同时添加一个新的标题行,将OrderQty和MonthlyTotal到列组合(Column Group),如图所示。
9.最后添加Subtotal到最后一列,整张报表设计如下:
报表实现的效果:
1.当开始时间为01/01/2008到02/01/2008时,显示为:
2.当开始时间为01/01/2008到03/01/2008时,显示为:
3.当开始时间为01/01/2008到04/01/2008时,显示为:
实现了动态表头的功能。
文中涉及到的源代码:源代码
参考文章:
1.Using SSRS - Matrix Control to Generate Columns Dynamically
- SSRS:按月汇总的动态表头实现-Matrix Control
- html中动态分级表头的实现
- easyUI实现动态表头
- easyui 实现动态表头
- easyui datagrid 动态表头 动态columns 的一种实现方式
- EXT3 动态列表表头实现
- easyUI实现动态增加表头
- SSRS 2008 分类汇总
- SQL按月汇总
- 实现按月消费统计的SQL语句
- fineReport报表导出数据,日期不能按月汇总的解决方法
- ExtJs 实现动态列,动态多表头
- ExtJs 实现动态列,动态多表头
- js表头固定实现思路汇总
- sql T_sql 通用的动态按月份统计输出
- 《EasyUI》——给DataGrid动态绑定表头和数据,实现表头与数据的真正解耦
- UltraWinGrid 动态实现多级多表头
- 使用jasperReport实现动态表头(转载)
- skynet浅析
- 在MFC中实现拖拽文件到对话框中的编辑控件中
- IIS HTTP重定向到HTTPS
- C++ 中使用 goto 编译通不过
- 如何提高代码质量
- SSRS:按月汇总的动态表头实现-Matrix Control
- 关于VC绘制图像的直方图
- 爱学园带你和HTML5游戏一起华丽转身
- opencv学习笔记:RotatedRect和CvBox2D的角度疑云
- windows 端口号
- 提高第24课时,实践2,成绩处理V2.0 数组指针版
- 6种常见的数据加载模式设计
- ArcGIS教程:使用概念模型创建地图(一)
- C++内存管理