对报表中的数据进行分组

更新日期: 2006 年 4 月 14 日

每个数据区域(表、矩阵、列表和图表)中的数据都可以按字段和表达式进行分组。您可以使用表内的组为表中的数据提供逻辑区域。您也可以向组头或组尾添加小计和其他表达式。在矩阵中,组显示为动态的列或行。可以在其他组中嵌套组,也可以添加小计。可以使用列表在报表中提供单独的组,也可以将列表放在列表中形成嵌套组。

若要查看有关在数据区域中对数据进行分组的说明,请参阅:

递归层次结构

递归层次结构是一种数据层次结构,在这种层次结构中,所有父子关系都以数据形式表示。例如,可以使用递归层次结构创建显示经理 - 员工关系的组织图。在这种层次结构中,表中包括员工 ID 列和经理 ID 列。经理 ID 会引用其他员工的员工 ID,从而建立了员工的层次结构。

若要建立递归层次结构,必须为数据区域内的组设置某些属性。使用包含唯一 ID(如员工 ID)的字段作为组表达式,然后在 Parent 属性中使用包含父 ID(如经理 ID)的字段。被定义为递归层次结构的组(即使用 Parent 属性的组)只能有一个组表达式。

在以下教程中,将使用 AdventureWorks 数据库中的 Employee 表创建一个递归层次结构。此教程假定您已经了解如何创建报表、数据集、查询和表。有关这些功能的信息,请参阅相关文档。

  1. 在“数据”视图中,创建一个基于 AdventureWorks 数据库的数据集。

  2. 在数据集中,使用以下查询:

    SELECT FirstName, LastName, EmployeeID, ManagerID
    FROM   HumanResources.Employee E INNER JOIN
           Person.Contact C ON  E.ContactID=C.ContactID
    
  3. 在“布局”视图中,创建一个表数据区域。

  4. 在表的第一个详细信息单元中,键入以下表达式:

    =Fields!FirstName.Value & " " & Fields!LastName.Value
    
  5. 右键单击表角,再单击**“属性”**。

  6. 在**“组”选项卡上,单击“详细信息分组”**。

  7. 在**“常规”选项卡的“表达式”**框中,键入或选择以下表达式:

    =Fields!EmployeeID.Value
    
  8. 在**“父组”**框中,键入或选择以下表达式:

    =Fields!ManagerID.Value
    

Level 函数

您可以在文本框填充中使用 Level 函数,以便基于员工在层次结构中的级别来缩进员工姓名。若要使用上面示例中的表执行此操作,请选中第一个详细信息单元中的文本框。打开该文本框的属性窗口。展开**“填充”节点,并单击“左侧”属性。从下拉列表中选择<表达式…>**,并输入以下内容:

=Convert.ToString(2 + (Level()*10)) + "pt"

填充属性都需要一个 nnxx 格式的字符串,其中,nn 是一个数字,而 xx 是度量单位。在默认情况下,文本框的填充是 2pt。上述表达式将生成一个字符串,该字符串使用 Level 函数基于级别增大填充大小。例如,级别为 1 的行会产生 12pt (2 + (1*10)) 的填充,而级别为 3 的行会产生 32pt (2 + (3*10)) 的填充。

有关 Level 函数的信息,请参阅 Level 函数 (Reporting Services)

请参阅

概念

使用数据区域
使用表数据区域
使用矩阵数据区域
使用列表数据区域
使用图表数据区域

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

已更改的内容:
  • 已将查询更正为使用 AdventureWorks 数据库而不是使用 AdventureWorks2000。