有表Dept(部门ID,父ID,部门名称):
DeptID PDeptID DeptName
1 0 XXXX有限公司
2 1 市场部
3 1 技术部
4 1 财务部
5 1 综合管理部
6 2 市场调研组
7 2 客服中心
8 2 售后服务组
9 3 技术开发组
10 3 项目维护组
11 4 财务预算组
12 4 出纳组
13 5 行政办公室
要得到如下结果(部门ID,父部门名称,部门名称):
DeptID PDeptName DeptName
1 XXXX有限公司
2 XXXX有限公司 市场部
3 XXXX有限公司 技术部
4 XXXX有限公司 财务部
5 XXXX有限公司 综合管理部
6 市场部 市场调研组
7 市场部 客服中心
8 市场部 售后服务组
9 技术部 技术开发组
10 技术部 项目维护组
11 财务部 财务预算组
12 财务部 出纳组
13 综合管理部 行政办公室
请用一条SQL语句实现,怎么写?(要求语法支持Access)
------解决思路----------------------
Access 中查询:
SELECT DeptID, '' AS PDeptName, DeptName FROM dept WHERE pdeptID=0
UNION
SELECT b.DeptID,A.DeptName AS PDeptName,B.DeptName FROM dept A ,dept B WHERE b.PdeptID=a.DeptId
------解决思路----------------------
with a(deptid,pdeptid,deptname) as
(
select 1,0, 'xxxx有限公司' union all
select 2,1, '市场部' union all
select 3,1,'技术部' union all
select 4,1,'财务部' union all
select 5,1,'综合管理部' union all
select 6,2,'市场调研组' union all
select 7,2,'客服中心' union all
select 8,2,'售后服务组' union all
select 9,3,'技术维护组' union all
select 10,3,'项目维护组' union all
select 11,4,'财务预算组' union all
select 12,4,'出纳组' union all
select 13,5 ,'行政办公室'
)
select a.deptid,b.deptname,a.deptname
from a left join a as b on a.pdeptid=b.deptid