我有一个简单的SQL查询来计数部门(子部门)中的所有员工,如下所示:
With Temp(id) AS
(
Select d.id From DEPARTMENT d
Where d.id = 1
UNION ALL
Select d.id From DEPARTMENT d JOIN Temp te ON d.idDepartment = te.id
)
Select count(*) From
(
Select e.id From Employee e Join Temp te On e.idDepartment = te.id
)但是我错了"StackOverflow",我不知道哪里是错误,你能帮我吗?测试用例有一些数据:表部门:
ID----------departmentName-----------idDepartment(id parent)
1 A 0
2 B 1表雇员:
id----------employeeName------------idDepartment
1 E_1 1
2 E_2 1
3 E_3 2所以当我选择一个部门的数量(A)->结果: 3,如果部门B->结果:1谢谢!
发布于 2013-01-19 09:28:48
我想我有一个可行的解决方案:
create table Department(id int, name varchar(255), idDepartment int);
create table Employee(id int, name varchar(255), idDepartment int);
insert into Department values(1, 'A', 0), (2, 'B', 1);
insert into Employee values(1, 'E1', 1), (2, 'E2', 1), (3, 'E3', 2);
with recursive temp(id) as (
select 1 union all
select d.id from temp te
inner join Department d on d.idDepartment = te.id
)
select count(*) from temp te
inner join Employee e on e.idDepartment = te.id;
drop table Department;
drop table Employee;https://stackoverflow.com/questions/14391406
复制相似问题