1

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

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 层(Division --> Subdivision)。该表将创建以下层次结构:

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

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

SELECT division, parentid
FROM division
WHERE companyid=@companyid

@companyid 是报告的参数。我的思考过程是,我想创建一个具有父组和详细信息组的表,其中父组将是所有具有空 PARENTID 的行,然后详细组将列出其 PARENTID 等于父行的除法的所有行. 我只是不确定如何在组中进行设置。过滤器?分开查询?在 SQL 查询中执行吗?

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

4

3 回答 3

1

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

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

Reporting Services 能够以“树”布局显示“层次结构”信息

更多信息请看这里

您不必创建另一个查询第一个具有CompanyIDAnd theParentID就可以了

于 2013-01-30T23:20:38.960 回答
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
于 2013-01-30T23:21:07.777 回答
0

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

如何开始:

  1. 如您所示创建数据集
  2. 从工具箱中放入一个表格对象
  3. 只放入明细数据的列
  4. 在“设计”布局的左下方单击“详细信息”,然后单击“添加组>父组”。选择您的分组
  5. 如果您愿意,您可以按需“折叠”详细信息列。您可以在详细信息分组上选择“可见性”。'报告最初运行时'>选择'隐藏'。选中“可以通过此报告项目切换显示”:选择一个单元格引用,以引用您想要扩展详细信息的内容。
于 2013-01-30T23:23:46.840 回答