解决方案 »
- 请问RDLC报表如何使用column进行分栏,请指教,万分感谢
- 用foreach遍历一个IEnumerable接口,能够嵌套吗?
- 怎样从List<Model>中比较取数,急!!!!!!!1
- 在C#中使用C中的char *类型.
- 这种做法太浪费了吗??????????
- 小弟需要做一个html编辑器,哪位有类似的程序源代码,高分救助!
- 用ADOX如何修改Access数据库的列数据类型?
- 为什么div 加了 runat="server"后css就变形了
- QQ挂机站全部源代码提供下载(asp.net+sql存储过程+nt服务轮询)
- 关于一个文件验证的问题
- 如何让GridView 中值为0的字段不显示?
- 难道没人能解决我的问题吗?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2010/01/31/5274571.aspxcreate table #EnterPrise
(
Department nvarchar(50),--部门名称
ParentDept nvarchar(50),--上级部门
DepartManage nvarchar(30)--部门经理
)
insert into #EnterPrise select '技术部','总经办','Tom'
insert into #EnterPrise select '商务部','总经办','Jeffry'
insert into #EnterPrise select '商务一部','商务部','ViVi'
insert into #EnterPrise select '商务二部','商务部','Peter'
insert into #EnterPrise select '程序组','技术部','GiGi'
insert into #EnterPrise select '设计组','技术部','yoyo'
insert into #EnterPrise select '专项组','程序组','Yue'
insert into #EnterPrise select '总经办','','Boss'
--查询部门经理是Tom的下面的部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='Tom'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.ParentDept=h1.Department
)
select * from hgo
/*
Department ParentDept DepartManage rank
--------------- -------------------- ----------------------- -----------
技术部 总经办 Tom 0
程序组 技术部 GiGi 1
设计组 技术部 yoyo 1
专项组 程序组 Yue 2
*/
--查询部门经理是GiGi的上级部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='GiGi'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.Department=h1.ParentDept
)
select * from hgo
/*
Department ParentDept DepartManage rank
-------------------- ---------------------- ----------- -----------
程序组 技术部 GiGi 0
技术部 总经办 Tom 1
总经办 Boss 2
*/
1、以路径字段为排序字段来提取以某个节点为根的整个树。提取的节点当然也是以路径来比较。你会发现记录全部会与递归算法算出的排列顺序一样。所不同的是递归算法算出来的有层次,而现在的没有层次。但层次信息是有的,那就是路径。
2、以后的处理方式就仁者见仁、智者见智了。可以把这些记录做成数组,也可以在显示的时候慢慢判断这是在方案1 我觉得很不错 期待不同的解决方案
主要不是什么大的项目 是PM给我单独的活 目前开发测试都我一个人 用SQL不合适