日期:2014-05-17  浏览次数:20481 次

对我来说,实在是太难的,希望各位大虾看一下,部门无级树的问题
部门编码            部门名称           上级编码           级数
10000000     集团总部           ROOT                   1
10020000     营销中心           10000000             2
10020100     综合部               10020000             3
10020101     综合部事务室    10020100             4


要得到的结果是
部门编码            部门名称         上级编码                  新增列
10000000 集团总部         ROOT                    10000000
10020000 营销中心          10000000             10000000,10020000
10020100 综合部              10020000             10000000,10020000,10020100
10020101 综合部事务室      10020100            10000000,10020000,10020100,100201010


这样的效果要如何实现啊,请各位大虾指点,感谢!!!!

------解决方案--------------------
if OBJECT_ID('tempdb..#dept') is not null
  drop table #dept
create table #DEPT
(
  部门编码 varchar(20),
  部门名称 varchar(20),
  上级部门编码 varchar(20),
  级别 int
)
insert into #DEPT 
select '10000000','集团总部','ROOT' ,1 
union all
select '10020000','营销中心','10000000',2 
union all
select '10020100','综合部','10020000',3 
union all
select '10020101','综合部事务室','10020100',4 
union all
select '100201011','信息部','100201010' ,5

select 部门编码,部门名称,上级部门编码,LEFT(XX,LEN(XX)-1)as paths
  FROM (
     SELECT 部门编码,部门名称,上级部门编码,
       (SELECT 上级部门编码+',' 
          FROM #DEPT 
          WHERE A.部门编码>=上级部门编码 
          ORDER BY 部门编码 FOR XML PATH('') 
        )AS XX
 &n