第 1 课:为矩阵报表定义数据集查询

在本课中,您将向在教程创建基本表报表中创建的报表服务器项目添加新的报表,定义数据源,以及定义数据集查询。您将使用 AdventureWorks2008R2 示例数据库作为数据源。本教程假定此数据库位于本地计算机上安装的默认 SQL Server 实例中。

打开现有的 Reporting Services 项目

  1. 单击**“开始”,依次指向“所有程序”**、Microsoft SQL Server 2008 R2,然后单击 Business Intelligence Development Studio

  2. 在**“文件”菜单上,指向“打开”,然后单击“项目/解决方案”**。

  3. 导航至名为 Tutorial 的报表服务器项目。

  4. 在 Tutorial 文件夹中,单击 Tutorial.sln。

  5. 单击**“打开”**打开该项目。

    解决方案资源管理器中将显示 Tutorial 项目。

创建新的报表

  1. 在解决方案资源管理器中,右键单击**“报表”,指向“添加”,再单击“新建项”**。

    注意注意

    如果未看到解决方案资源管理器,请单击“视图”菜单中的“解决方案资源管理器”

  2. 在**“添加新项”对话框的“模板”窗格中,选择“报表”**。

  3. 在**“名称”中,键入 Sales by Area and Year.rdl,然后单击“添加”**。

    报表设计器将在设计模式下打开,并显示空白报表定义。

为报表数据定义 Transact-SQL 查询

  1. 在**“报表数据”窗格中,单击“新建”,然后单击“数据源”。此时将打开“数据源属性”**对话框。

  2. 在**“名称”**中,键入 AdventureWorks2008R2。

    请确保选中**“嵌入连接”“类型”**为 Microsoft SQL Server

  3. 在**“连接字符串”**中,键入以下内容:

    Data source=localhost; initial catalog=AdventureWorks2008R2
    
  4. 单击“确定”。

    数据源将显示在“报表数据”窗格中。

  5. 在“报表数据”窗格中,右键单击 AdventureWorks2008R2,然后单击**“添加数据集”**。

  6. 在**“名称”**中,键入 Sales。

  7. 在**“查询类型”中,确保已选中“文本”**。

  8. 在**“查询”窗格下,单击“查询设计器”**打开基于文本的查询设计器。

  9. 在查询窗格中,粘贴以下 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')
    
  10. 若要查看查询的结果,请单击查询设计器工具栏上的**“运行”**(!)。

    在结果集中,您将看到来自 AdventureWorks2008R2 数据库中 7 个不同表的 18 个字段的数据。此查询包括可用于在报表中对数据进行分组的多种字段,包括订单日期的年份和月份、销售区域(针对国家/地区和区域)的地理位置以及产品类别和子类别。另外,已对发生在北美且类别为 Clothing 和 Components、子类别以字母 C 开头的销售的销售数据进行了筛选,以仅检索 2003 年和 2004 年的销售订单。本教程中使用筛选创建可在单页上显示的简洁示例。

  11. 单击“确定”。再次单击**“确定”**。

    数据集查询中的字段将显示在“报表数据”窗格中。

下一个任务

您已成功指定了一个用于检索报表数据的查询。接下来,您将向设计图面添加一个矩阵数据区域并通过添加组在矩阵中组织数据。请参阅第 2 课:添加带有行组和列组的矩阵数据区域