没分????--> --> (Andy)生成测试数据 2008-07-15
Set Nocount On
declare @1 table([id] int,[unit] nvarchar(4),[parentID] nvarchar(1),[level] nvarchar(1))
Insert @1
select 1,N'业务一部',N'0',N'0' union all
select 2,N'业务二部',N'0',N'0' union all
select 3,N'业务三部',N'0',N'0' union all
select 4,N'第一分部',N'1',N'1' union all
select 5,N'第二分部',N'3',N'1' union all
select 6,N'第一组',N'4',N'2' union all
select 7,N'第二组',N'4',N'2' union all
select 8,N'第三组',N'4',N'2' union all
select 9,N'第四组',N'5',N'2' union all
select 10,N'第五组',N'5',N'2' union all
select 11,N'第六组',N'5',N'2'
 
declare @2 table([id] int,[name] nvarchar(2),[unit] int,[authority] int)
Insert @2
select 1,N'小王',1,1 union all
select 2,N'小白',4,2 union all
select 3,N'小张',6,3 union all
select 4,N'小刘',9,3 union all
select 5,N'小黄',11,4
 
declare @3 table([id] int,[tag] nvarchar(4))
Insert @3
select 1,N'业务部长' union all
select 2,N'分部长' union all
select 3,N'组长' union all
select 4,N'组员';With t1 As
(
Select id,parentid,[level],unit0=unit,unit1=Convert(nvarchar(4),''),unit2=Convert(nvarchar(4),'') From @1 Where [level]=0
Union All
Select a.id,a.parentid,a.[level],unit0=b.unit0,unit1=Convert(nvarchar(4),Case a.[level] When 1 Then a.unit Else b.unit1 End),unit2=Convert(nvarchar(4),Case a.[level] When 2 Then a.unit Else b.unit2 End) From @1 a Inner Join t1 b On a.parentid=b.id
)
Select 
[姓名]=b.name,
[权限]=c.tag,
[小组]=a.unit2,
[分部]=a.unit1,
[业务部]=a.unit0
From t1 a
Inner Join @2 b On b.unit=a.id
Inner Join @3 c On c.id=b.authority 
Order By b.id/*
姓名   权限   小组   分部   业务部
---- ---- ---- ---- ----
小王   业务部长           业务一部
小白   分部长       第一分部 业务一部
小张   组长   第一组  第一分部 业务一部
小刘   组长   第四组  第二分部 业务三部
小黄   组员   第六组  第二分部 业务三部
*/