22,209
社区成员
发帖
与我相关
我的任务
分享
--SELECT * FROM T_COM_MODULE
;WITH t AS
(
SELECT Module_code, lvl = 0,px=CAST(ROW_NUMBER()OVER(ORDER BY SORT_NUMBER) AS VARBINARY)
FROM T_COM_MODULE
WHERE Module_code = 'SYSTEM_MANAGE'
UNION ALL
SELECT a.Module_code, lvl+1,CAST(px+CAST(ROW_NUMBER()OVER(PARTITION BY a.Parent_ID ORDER BY SORT_NUMBER) AS VARBINARY) AS VARBINARY)
FROM T_COM_MODULE a, t b
WHERE a.Parent_ID = b.Module_code
)
SELECT lvl,SORT_NUMBER,REPLICATE(SPACE(2),a.lvl)+b.MODULE_Name AS tree
FROM t a
JOIN T_COM_MODULE b
ON a.Module_code=b.Module_code
ORDER BY a.px
/*
lvl SORT_NUMBER tree
----------- --------------------------------------- --------------------------------
0 7 系统管理
1 1 数据字典管理
2 1 机构类型管理
2 2 机构性质管理
2 3 组织类型管理
2 4 组织分类管理
2 5 资产类型
2 6 区域管理
2 7 省份管理
2 8 行政市管理
2 9 区县管理
2 10 职务分类管理
2 11 行业管理
2 12 专业类型管理
2 13 标准功能管理
2 14 工作方式管理
2 15 系统全局参数管理
2 16 自定义属性字段管理
1 2 组织机构管理
2 6 机构管理
2 7 组织管理
2 8 职务管理
2 9 岗位管理
1 3 人员管理
1 4 角色与权限管理
2 1 模块与功能管理
2 2 角色管理
2 3 权限信息查询
1 5 专业管理
1 6 系统消息管理
1 7 通知公告管理
(31 行受影响)
*/
回个树形结构代码with t1 as
(
select convert(varchar(1000),MODULE_CODE) p,* from T_COM_MODULE where PARENT_ID is null
union all
select convert(varchar(1000),b.p+'->'+a.MODULE_CODE),a.* from T_COM_MODULE a ,t1 b where a.PARENT_ID =b.MODULE_CODE
)
select * from t1 order by p