如何在一个查询中编写一个包含工人和他们的经理的查询



我有2个表(在截图表)。一张桌子上有员工,也有工人,也有经理,另一张桌子上有部门。我还需要编写一个查询,它返回员工的姓名、直接经理的姓名、部门的名称以及工资和销售佣金(COMM)。屏幕截图中的空单元格表示NULL。此外,对一些工人来说,他们没有经理!

我试图做查询与联合所有,但这是一个问题,因为行是不同的!我该怎么写呢?

select e.ename, d.name, sum (case when e.comm<>null then 1 else 0+ case when e.sal<>null then 1 else 0 end)as sum_total 
from emp as e 
left join dept as d on e.deptno=d.deptno
where e.job<>"Manager"
Union ALL
select e.ename
from emp as e
left join dept as d on e.deptno=d.deptno
where e.job="Manager"

提前谢谢你

您可以自连接emp表以获取管理人员的名称

select e.ename, 
d.name, 
coalesce(e.sal, 0) + coalesce(e.comm, 0) as salary, 
m.ename as manager
from emp e 
join dept as d on e.deptno = d.deptno
left join emp m on m.empno = e.mgr

最新更新