我有2个表,emp和dept(员工和部门).假设我想显示每个部门所有工资的总和,我可以使用类似的东西:
select sum(sal), deptno
from emp
group by deptno
Run Code Online (Sandbox Code Playgroud)
现在这样有效,但是说列表中有一个没有员工的部门,我也想让它出现,我该怎么做?我已经尝试了连接,nvl函数,但到目前为止没有运气.例如,这可行,但它不会显示空部门:
select sum(emp.sal), dept.deptno
from emp, dept
where emp.deptno=dept.deptno
group by dept.deptno
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
LEFT JOIN 会做的伎俩:
select coalesce(sum(emp.sal),0), dept.deptno
from dept
left join emp on emp.deptno=dept.deptno
group by dept.deptno
Run Code Online (Sandbox Code Playgroud)
您应该始终明确声明您的联接,以便您可以在需要时更改它们.隐式连接总是如此INNER JOIN.
此外,通过使用,我将查询更改为显示0而不是NULL部门没有员工COALESCE.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |