当前位置: 代码迷 >> Sql Server >> sql 实现递归输出无限字节点,该如何处理
  详细解决方案

sql 实现递归输出无限字节点,该如何处理

热度:104   发布时间:2016-04-24 08:51:23.0
sql 实现递归输出无限字节点
表结构:
modeid   modename   parentid
100 商品综合管理0
101 定单管理 0
102 用户管理 0
104 学院广告 0
105 系统设置 0
106 附件管理 0
107 商品管理 100
108 明细管理 100
109 物流管理 100
110 商品信息管 107
111 商品分类管 107
112 回收站管理 107
114 团购管理 108
115 拍卖管理 108
116 优惠管理 108
117 会员管理 102
118 会员卡管理 102
119 资金管理 102
120 管理员管理 102
121 添加管理员 120
122 修改管理员 120
写sql语句
商品综合管理
            商品管理
                      商品信息管理
                      商品分类管理
                      回收站管理
           明细管理
                      团购管理
                      拍卖管理
                      优惠管理
           物流管理
定单管理
用户管理
           会员管理
          会员卡管理
          资金管理
          管理员管理
                    添加管理员
                    修改管理员
学院广告
系统设置
附件管理
格式不要在一列里面显示,求大神指教
------解决思路----------------------

-- 数据还是前面的 
-- 最好确定一下,你最多有多少级,这里给你写 5 级出来,不够自己再加 

with m as (
select test.* , modeid as lid , 0 as jc from test where parentid = 0 
 union all
select test.*, cast(m.lid + '-' + test.modeid as varchar(20)) , m.jc + 1 
  from test , m 
 where test.parentid = m.modeid
)
select modeid , 
       case when jc = 0 then modename else '' end C1 ,
       case when jc = 1 then modename else '' end C2 ,
       case when jc = 2 then modename else '' end C3 ,
       case when jc = 3 then modename else '' end C4 ,
       case when jc = 4 then modename else '' end C5 
  from m order by lid , modeid 
go
drop table test 
go

modeid               C1                   C2                   C3                   C4                   C5
-------------------- -------------------- -------------------- -------------------- -------------------- --------------------
100                  商品综合管理                                                                              
107                                       商品管理                                                           
110                                                            商品信息管                                     
111                                                            商品分类管                                     
112                                                            回收站管理                                     
108                                       明细管理                                                           
114                                                            团购管理                                      
115                                                            拍卖管理                                      
116                                                            优惠管理                                      
109                                       物流管理                                                           
101                  定单管理                                                                                
102                  用户管理                                                                                
117                                       会员管理                                                           
118                                       会员卡管理                                                          
119                                       资金管理                                                           
120                                       管理员管理                                                          
121                                                            添加管理员                                     
122                                                            修改管理员                                     
104                  学院广告                                                                                
105                  系统设置                                                                                
106                  附件管理                                                                                

(21 行受影响)



------解决思路----------------------
額。。。 
直接用CASE好多了。

 
我的可以无视
  相关解决方案