如何在查询中与工人及其旁边的经理一起编写查询

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 一起使用?

在 Kotlin 中与 @RequestParam 一起使用时,自定义 HashMap 类获取参数类型不匹配

如何编写一个显示仅分配给登录用户的列表的 SQL 查询?

如何使用sql server从excel中获取数据