Saltar navegação

S01.b3 - FULL OUTER

Conceitos

Quando um full outer join é executado, são apresentadas todas as linhas unmatched de todas as tabelas, com valores nulos. As funções COALESCE e VALUE substituem os valores nulos por literais. As funções tem nomes diferentes mas a sintaxe e o funcionamento são iguais.

Tabela Departamento (DEPT)

DEPTNO
DEPTNAME
A01
ACCOUNTING
A02
PAYROLL
A03
OPERATIONS
A04 PERSONNEL
A05
MAINTENANCE


Tabela Empregados (EMP)

EMPNO
WORKDEPT
5001
A01
5002
A04
5003
A03
5004
A03
5005
A04
5006
A04
5007
A03
5008
A06

Full outer join com a função COALESCE

SELECT
COALESCE(B.EMPNO, 'NO EMP') AS EMPNO,
  COALESCE(A.DEPTNO, 'NO DEPT') AS DEPTNO,
  COALESCE(A.DEPTNAME, 'NO DEPT NAME') AS DEPTNAME
  FROM PW0001.DEPT A
  FULL JOIN PW0001.EMP B
  ON A.DEPTNO = B.WORKDEPT
  ORDER BY EMPNO

Tabela Resultado

EMPNO DEPTNO
DEPTNAME
NO EMP
A02 PAYROLL
NO EMP
A05 MAINTENANCE
5001 A01 ACCOUNTING
5002 A04 PERSONNEL
5003 A03
OPERATIONS
5004 A03 OPERATIONS
5005 A04
PERSONNEL
5006 A04
PERSONNEL
5007 A03 OPERATIONS
5008
NO DEPT
NO DEPT NAME

Em cada linha unmatched entre as tabelas o valor <null> é substituido pela literal estabelecida na declaração SELECT com o uso da função COALESCE.

Por definição um full outer join mantém as linhas unmatched tanto da tabela composite (também chamada outer) quanto da tabela nova (também chamada inner). No exemplo, a tabela composite (outer) é a tabela PW0001.DEPT e a tabela nova (inner) é a tabela PW0001.EMP.

 

Licença: licença proprietária