所以我有一个有分区和子分区的表。结构如下:
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查询中执行此操作吗?
非常感谢任何和所有帮助!谢谢!
答案 0 :(得分:1)
如果我正确理解了您的目标,您希望报告以层次结构模式显示信息。
如果是这样,您可以通过设置递归层次结构组来实现它。
报告服务能够显示"层次结构"树中的信息"布局
For more information look here
您不必创建另一个查询,第一个查询包含CompanyID
且ParentID
就好了
答案 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就可以为您进行分组。您甚至可以在多个级别或更好级别上进行分层,然后根据过滤器折叠和扩展分组。
如何开始: