ITPub博客

首页 > Linux操作系统 > Linux操作系统 > partition outer join

partition outer join

原创 Linux操作系统 作者:admincy 时间:2019-04-08 07:18:05 0 删除 编辑

partition outer join   ---

对于员工100101分别和部门表进行outer join 。此时用到right outer join,对于employee表中不匹配的记录,employee_id字段不显示为null,而是显示实际的employee_id的值,而其它的字段则显示为空。

select e.employee_id, e.department_id, d.department_id

  from hr.employees e partition by(employee_id)

 right outer join departments d on e.department_id = d.department_id

 where e.employee_id in (100,101)

 and d.department_id in (10,20,90)

 

结果为

EMPLOYEE_ID

DEPARTMENT_ID

DEPARTMENT_ID

100

 

10

100

 

20

100

90

90

101

 

10

101

 

20

101

90

90

 

相当于以下的语句

select nvl(e.employee_id, 100), e.department_id, d.department_id
  from (select * from hr.employees where employee_id = 100) e
 right outer join departments d on e.department_id = d.department_id
 where d.department_id in (10, 20, 90)
union all
select nvl(e.employee_id, 101), e.department_id, d.department_id
  from (select * from hr.employees where employee_id = 101) e
 right outer join departments d on e.department_id = d.department_id
 where d.department_id in (10, 20, 90)

 

此时的employee_id使用nvl将填充空值,employee_id = 100的过滤条件放在子查询中,若放于外面,由于是先过滤后运行function NVL,则导致以上的结果只显示两条记录,其它记录因为employee_id为空而被过滤了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30821/viewspace-442330/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-17

  • 博文量
    18
  • 访问量
    17329