对小弟我来说,实在是太难的,希望各位看一下,部门无级树的有关问题
对我来说,实在是太难的,希望各位大虾看一下,部门无级树的问题
部门编码 部门名称 上级编码 级数
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
这样的效果要如何实现啊,请各位大虾指点,感谢!!!!
------解决方案--------------------
部门编码 部门名称 上级编码 级数
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
FROM #DEPT A