当前位置: 代码迷 >> Sql Server >> AAAAA求1SQL语句!AAAAA
  详细解决方案

AAAAA求1SQL语句!AAAAA

热度:88   发布时间:2016-04-24 09:25:04.0
AAAAA求一SQL语句!AAAAA
有表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