前言:
工具是为实现需求服务的。不同的工具提供了不同的方式,在选择过程中,选择最优最快的实现方式,这是一个成熟的码农必备的技能。本篇参考了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(CHA