第 3 课:为表报表定义数据集 (Reporting Services)

定义数据源后,您需要定义数据集。在 Reporting Services 中,您在报表中使用的数据包含在“数据集”中。数据集包括一个指向数据源的指针、将由报表使用的查询以及计算字段和变量。

可以在报表设计器中使用查询设计器来设计查询。在本教程中,您将创建一个查询,用于从 AdventureWorks2008R2 数据库中检索销售订单信息。

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

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

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

  3. 单击**“使用在我的报表中嵌入的数据集”单选按钮。确保数据源名称 AdventureWorks 位于“数据源”文本框中,并确保“查询类型”“文本”**。

  4. 将以下 Transact-SQL 查询键入(或复制并粘贴)到**“查询”**框中。

    SELECT 
       soh.OrderDate AS [Date], 
       soh.SalesOrderNumber AS [Order], 
       pps.Name AS Subcat, pp.Name as Product,  
       SUM(sd.OrderQty) AS Qty,
       SUM(sd.LineTotal) AS LineTotal
    FROM Sales.SalesPerson sp 
       INNER JOIN Sales.SalesOrderHeader AS soh 
          ON sp.BusinessEntityID = soh.SalesPersonID
       INNER JOIN Sales.SalesOrderDetail AS sd 
          ON sd.SalesOrderID = soh.SalesOrderID
       INNER JOIN Production.Product AS pp 
          ON sd.ProductID = pp.ProductID
       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
    HAVING ppc.Name = 'Clothing' 
    
  5. (可选)单击**“查询设计器”按钮。查询将在基于文本的查询设计器中显示。通过单击“编辑为文本”,可以切换到图形查询设计器。通过单击查询设计器工具栏上的“运行”**(!) 按钮,查看查询的结果。

    您将看到来自 AdventureWorks2008R2 数据库中四个不同表的六个字段的数据。查询利用别名等 Transact-SQL 功能。例如,SalesOrderHeader 表称为 soh。

    单击**“确定”**退出查询设计器。

  6. 单击**“确定”退出“数据集属性”**对话框。

    此时将在“报表数据”窗格中显示 AdventureWorksDataset 数据集字段。

下一个任务

您已成功指定了一个用于检索报表数据的查询。接下来将创建报表布局。请参阅第 4 课:向报表添加表 (Reporting Services)