id name parentid qty
A AA 0 0
BB 业务部 A 20
CC 生产部 A 30
DD 财务部 A 40
EEE 市场一部 BB 50
FFF 市场二部 BB 60
GGG 成控部 DD 70
HHHH 客服部 FFF 80
上面数据,我如何用SQL语句查出以下数据。
只查三层部门的数据。
NAME1 NAME2 NAME3 QTY
业务部 20
生产部 30
财务部 40
业务部 市场一部 50
业务部 市场二部 60
财务部 成控部 70
业务部 市场二部 客服部 80
;with cte as (
select id,name1 = name ,name2 = cast('' as varchar(50)),name3 = cast('' as varchar(50)) ,qty from tab where parentid = 'A'
union all
select a.id,name1 = b.name1 ,name2 = a.name,name3 = cast('' as varchar(50)) ,a.qty from tab a,cte b
where a.parentid = b.id
and b.name2 = ''
union all
select a.id,name1 = b.name1 ,name2 = b.name2,name3 = a.name ,a.qty from tab a,cte b
where a.parentid = b.id
and b.name2 <> ''
)
select name1,name2,name3,qty from cte