如何在查询中与工人及其旁边的经理一起编写查询
Posted
技术标签:
【中文标题】如何在查询中与工人及其旁边的经理一起编写查询【英文标题】:How to write a query with workers and their managers beside them in on query 【发布时间】:2021-12-11 18:40:46 【问题描述】:我有 2 张桌子(在屏幕截图中 tables)。一张桌子的员工还有工人和经理,另一张(部门)和部门。我需要编写一个查询,返回员工姓名、直接经理姓名、部门名称和工资以及销售佣金 (COMM)。屏幕截图中的空单元格表示 NULL。另外,对于一些工人来说,他们没有经理!
我尝试使用 Union all 进行查询,但这是一个问题,因为行不同!。那我该怎么写呢?
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"
提前谢谢你
【问题讨论】:
在第二次选择中添加 NULL。 缺少 GROUP BY。 【参考方案1】:您可以自行加入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
【讨论】:
以上是关于如何在查询中与工人及其旁边的经理一起编写查询的主要内容,如果未能解决你的问题,请参考以下文章
如何让 ibm_db 或 PyDB2 python 模块在 Mac OS X 10.7 Lion 中与 DB2 一起使用?