表结构:
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好多了。
我的可以无视