SSRS中的分组问题

时间:2013-01-30 22:58:29

标签: sql reporting-services ssrs-2008 ssrs-grouping

所以我有一个有分区和子分区的表。结构如下:

COMPANYID | DIVISIONID | DIVISION | PARENTID
    1     |     1      | North    | NULL
    1     |     2      | South    | NULL
    1     |     3      | East     | NULL
    1     |     4      | West     | NULL
    1     |     5      | Sales    | 1
    1     |     6      | Service  | 1
    1     |     7      | Sales    | 2
    1     |     8      | Service  | 2
    1     |     9      | Sales    | 3
    1     |     10     | Service  | 3
    1     |     11     | Sales    | 4
    1     |     12     | Service  | 4

该表背后的想法是,数据表明所有这些部门/细分都是针对同一家公司的。任何具有空PARENTID的东西都是“分区”,任何具有PARENTID的东西都是“子分区”。最多2层(分区 - >细分)。该表将创建以下层次结构:

Company 1
    North
        Sales
        Service
    South
        Sales
        Service
    East
        Sales
        Service
    West
        Sales
        Service

我正在尝试制作一份SSRS报告,其中显示有关公司的详细信息,包括包含所有部门和子部门的表格。我使用以下查询来检索所有分区和细分的列表:

SELECT division, parentid
FROM division
WHERE companyid=@companyid

@companyid是报告的参数。我的想法过程是我想要创建一个具有Parent组和Detail组的表,其中Parent组将是具有空PARENTID的那些行,然后Detail组将列出其PARENTID等于Parent行的divisionid的所有行。我只是不确定如何在小组中设置它。过滤器?单独查询?在SQL查询中执行此操作吗?

非常感谢任何和所有帮助!谢谢!

3 个答案:

答案 0 :(得分:1)

如果我正确理解了您的目标,您希望报告以层次结构模式显示信息。

如果是这样,您可以通过设置递归层次结构组来实现它。

报告服务能够显示"层次结构"树中的信息"布局

For more information look here

您不必创建另一个查询,第一个查询包含CompanyIDParentID就好了

答案 1 :(得分:1)

对于最多有2个级别的简单层次结构,您可以将表连接到自身:

SELECT D1.CompanyId, D1.DivisionId, D1.Division, D2.Division AS Subdivision
FROM DivisionTable D1
INNER JOIN DivisionTable D2 ON D1.DivisionId = D2.ParentId AND D1.CompanyId = D2.CompanyId
WHERE D1.CompanyId = @CompanyId

答案 2 :(得分:0)

您只需要将select语句作为数据集,SSRS就可以为您进行分组。您甚至可以在多个级别或更好级别上进行分层,然后根据过滤器折叠和扩展分组。

如何开始:

  1. 如您所示创建数据集
  2. 从工具箱中输入表格对象
  3. 仅列入详细数据列
  4. 在“设计”布局的左下角,点击“详细信息”,然后点击“添加组>父组”。选择您的分组
  5. 如果您希望可以根据需要“折叠”详细信息列。您可以在详细分组上选择“可见性”。 “最初运行报告时”>选择“隐藏”。选中“此报表项可以切换显示”:选择要扩展详细信息的单元格引用。