我想编写一个查询,该查询将返回部门名称及其子部门的相应计数。
我有以下表结构:
表名#部门 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
您的帮助将不胜感激。
以下是您可以尝试的查询
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
你可以试试这个-
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
尝试这个
select *,count(ChildDepart.PARENT_DEP_ID) from Department as ParentDepart inner join
Department as ChildDepart in ParentDepart.DEPT_ID = ChildDepart.PARENT_DEP_ID
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;