2016-09-30 29 views
8

Ok folks, điều này khiến tôi phát điên ...SSRS không hiển thị tất cả các hàng theo cấp (phân cấp)

Tôi có một báo cáo để lấy lại chi tiết về một số tính năng. Các tính năng này có thể treo những người khác, tồn tại ở bên phải của riêng họ hoặc cả hai.

tôi có các dữ liệu sau khi kết quả của truy vấn:

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 

Như bạn có thể thấy, một số tính năng phù hợp với nhiều địa điểm trong hệ thống phân cấp. Tuy nhiên, tất cả tôi nhận được trở lại trong báo cáo là:

SSRS output

Tôi nhóm trên Feature_ID, cha mẹ đệ quy là PARENT_ID. Tôi đang thiếu gì?

+0

gì nên kết quả của bạn? Tôi thấy tablix của bạn đang hiển thị dữ liệu sai vì 24 phải ở trong 'mức 0', vậy biểu thức mức bạn đang sử dụng là gì? –

+0

@alejandrozuleta Tôi đang sử dụng '= level()' cho trường cấp. – JohnHC

+2

Bạn mong đợi kết quả gì? –

Trả lời

5

Bằng từ ngữ và kết quả không mong muốn của bạn, có vẻ như bạn đang tìm kiếm danh sách các mức và tính năng riêng biệt. Hy vọng rằng sau đây là hữu ích. Nếu không, có lẽ bạn có thể cung cấp một số ngữ cảnh bổ sung để hiểu những gì bạn đang tìm kiếm.

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; 

này cho kết quả sau:

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 
Các vấn đề liên quan