2

我想编写一个查询,该查询将返回部门名称及其子部门的相应计数。

我有以下表结构:

表名#部门
Dept_ID(Pk) Dept_name parent_dept_id(references dept_id)

虚拟数据将是

DEPT_ID DEPT_NAME PARENT_DEP_ID   
1 总公司 1
2 管理 1
3 艺术 2
4 科学 2
12 农业 2
5 比较 科学4

您的帮助将不胜感激。

4

4 回答 4

1

这是 SQLFiddel 演示

以下是您可以尝试的查询

select P.DEPT_ID,P.DEPT_NAME,count(C.DEPT_ID)
  from Department P
  Left join Department C
    on p.DEPT_ID = C.PARENT_DEP_ID
   and p.DEPT_ID <> C.DEPT_ID
 group by P.DEPT_ID,P.DEPT_NAME
于 2013-08-14T07:24:57.393 回答
0

你可以试试这个-

Select count(*) as count, P.* from Department P 
  LEFT JOIN Department C ON p.dept_id = C.parent_dep_id
  GROUP BY C.parent_dep_id
于 2013-08-14T06:54:22.477 回答
0

尝试这个

select *,count(ChildDepart.PARENT_DEP_ID)    from Department as ParentDepart inner join
Department as ChildDepart in ParentDepart.DEPT_ID = ChildDepart.PARENT_DEP_ID
于 2013-08-14T06:55:37.967 回答
0
select DEPT_ID,DEPT_NAME,coalesce(dt.child,0) CHILD 
from department d
left join
(
  select PARENT_DEP_ID,count(1) child 
  from department 
  where DEPT_ID <> PARENT_DEP_ID 
  group by 1
)dt
on d.DEPT_ID=dt.PARENT_DEP_ID;
于 2013-08-14T13:02:50.737 回答