第 1 课:为矩阵报表定义数据集查询
在本课中,您将向在教程创建基本表报表中创建的报表服务器项目添加新的报表,定义数据源,以及定义数据集查询。您将使用 AdventureWorks2008R2 示例数据库作为数据源。本教程假定此数据库位于本地计算机上安装的默认 SQL Server 实例中。
打开现有的 Reporting Services 项目
单击**“开始”,依次指向“所有程序”**、Microsoft SQL Server 2008 R2,然后单击 Business Intelligence Development Studio。
在**“文件”菜单上,指向“打开”,然后单击“项目/解决方案”**。
导航至名为 Tutorial 的报表服务器项目。
在 Tutorial 文件夹中,单击 Tutorial.sln。
单击**“打开”**打开该项目。
解决方案资源管理器中将显示 Tutorial 项目。
创建新的报表
在解决方案资源管理器中,右键单击**“报表”,指向“添加”,再单击“新建项”**。
注意 如果未看到解决方案资源管理器,请单击“视图”菜单中的“解决方案资源管理器”。
在**“添加新项”对话框的“模板”窗格中,选择“报表”**。
在**“名称”中,键入 Sales by Area and Year.rdl,然后单击“添加”**。
报表设计器将在设计模式下打开,并显示空白报表定义。
为报表数据定义 Transact-SQL 查询
在**“报表数据”窗格中,单击“新建”,然后单击“数据源”。此时将打开“数据源属性”**对话框。
在**“名称”**中,键入 AdventureWorks2008R2。
请确保选中**“嵌入连接”且“类型”**为 Microsoft SQL Server。
在**“连接字符串”**中,键入以下内容:
Data source=localhost; initial catalog=AdventureWorks2008R2
单击“确定”。
数据源将显示在“报表数据”窗格中。
在“报表数据”窗格中,右键单击 AdventureWorks2008R2,然后单击**“添加数据集”**。
在**“名称”**中,键入 Sales。
在**“查询类型”中,确保已选中“文本”**。
在**“查询”窗格下,单击“查询设计器”**打开基于文本的查询设计器。
在查询窗格中,粘贴以下 Transact-SQL 查询:
SELECT SOH.SalesPersonID AS ID, P.FirstName, P.LastName, SOH.SalesOrderNumber AS [Order], SOH.OrderDate AS [Date], DATEPART(yy, SOH.OrderDate) AS [Year], DATEPART(mm, SOH.OrderDate) AS [Month], ST.[Group] AS [Geography], ST.CountryRegionCode AS CountryRegion, ST.Name AS Territory, PPC.Name AS Category, PPS.Name AS Subcat, PP.Name AS Product, PP.Color, PP.Size, CASE WHEN PP.Size = 'S' THEN 1 WHEN PP.Size = 'M' THEN 2 WHEN PP.Size = 'L' THEN 3 WHEN PP.Size = 'XL' THEN 4 ELSE PP.Size END AS SizeSortOrder, SUM(SD.OrderQty) AS Qty, SUM(SD.LineTotal) AS LineTotal FROM Sales.SalesPerson AS SP INNER JOIN Sales.SalesOrderHeader AS SOH ON SP.BusinessEntityID = SOH.SalesPersonID INNER JOIN Person.Person AS P ON P.BusinessEntityID = SP.BusinessEntityID INNER JOIN Sales.SalesOrderDetail AS SD ON SD.SalesOrderID = SOH.SalesOrderID INNER JOIN Production.Product AS PP ON SD.ProductID = PP.ProductID INNER JOIN Sales.SalesTerritory AS ST ON ST.TerritoryID = SP.TerritoryID INNER JOIN Production.ProductSubcategory AS PPS ON PP.ProductSubcategoryID = PPS.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PPC ON PPC.ProductCategoryID = PPS.ProductCategoryID GROUP BY PPC.Name, SOH.OrderDate, SOH.SalesOrderNumber, PPS.Name, PP.Name, SOH.SalesPersonID, P.LastName, P.FirstName, ST.[Group], ST.CountryRegionCode, ST.Name, PP.Color, PP.Size HAVING (DATEPART(yy,SOH.OrderDate) IN ('2003','2004') AND ST.[Group] = 'North America' AND LEFT(PPS.Name,1) IN ('C','T') AND LEFT(PPC.Name,1) = 'C')
若要查看查询的结果,请单击查询设计器工具栏上的**“运行”**(!)。
在结果集中,您将看到来自 AdventureWorks2008R2 数据库中 7 个不同表的 18 个字段的数据。此查询包括可用于在报表中对数据进行分组的多种字段,包括订单日期的年份和月份、销售区域(针对国家/地区和区域)的地理位置以及产品类别和子类别。另外,已对发生在北美且类别为 Clothing 和 Components、子类别以字母 C 开头的销售的销售数据进行了筛选,以仅检索 2003 年和 2004 年的销售订单。本教程中使用筛选创建可在单页上显示的简洁示例。
单击“确定”。再次单击**“确定”**。
数据集查询中的字段将显示在“报表数据”窗格中。