SSRS未按级别显示所有行(层次结构)

时间:2016-09-30 15:40:53

标签: sql reporting-services ssrs-2012

好的伙计们,这让我发疯了......

我有一份报告可以提取许多功能的详细信息。这些功能可以挂掉其他人,可以自己存在,也可以两者兼而有之。

我有以下数据作为查询的结果:

Feature_ID   Parent_ID
24            
24          25
20            
26          12
12            
21          23
26          20
22            
24          23
23          26
24          27
27          28
24          22
29          20
23            
25            
27          29
22          26
28          12

如您所见,某些功能适合层次结构中的多个位置。但是,我在报告中得到的是:

SSRS output

我在Feature_ID上进行分组,递归父级是Parent_ID。我错过了什么?

1 个答案:

答案 0 :(得分:5)

根据您的措辞和意外输出,您感觉就像在寻找不同级别和功能的列表。希望以下内容对您有所帮助。如果没有,也许你可以提供一些额外的背景来理解你在寻找什么。

declare @table table (Feature_ID int, Parent_ID int);

insert @table values
(24,null),
(24,25),
(20,null),
(26,12),
(12,null),
(21,23),
(26,20),
(22,null),
(24,23),
(23,26),
(24,27),
(27,28),
(24,22),
(29,20),
(23,null),
(25,null),
(27,29),
(22,26),
(28,12);

select * from @table order by 1,2;
select * from @table order by 2,1;

with cte as (
        select  Feature_ID, Parent_ID, 0 [Level], CAST(Feature_ID as varchar(200)) [Path]
        from    @table
        where   Parent_ID is null

        union   all

        select  t.Feature_ID, t.Parent_ID, c.[Level] + 1, cast(c.[Path] + '|' + CAST(t.Feature_ID as varchar(200)) as varchar(200))
        from    @table t
        join    cte c
                on c.Feature_ID = t.Parent_ID
)
select  distinct [Level], Feature_ID
from    cte
order   by [Level], Feature_ID;

这给出了以下结果:

Level   Feature_ID
0   12
0   20
0   22
0   23
0   24
0   25
1   21
1   24
1   26
1   28
1   29
2   22
2   23
2   27
3   21
3   24