Teradata - CASE e COALESCE
Este capítulo explica as funções CASE e COALESCE do Teradata.
Expressão CASE
A expressão CASE avalia cada linha em relação a uma condição ou cláusula WHEN e retorna o resultado da primeira correspondência. Se não houver correspondências, o resultado da parte ELSE será retornado.
Sintaxe
A seguir está a sintaxe da expressão CASE.
CASE <expression>
WHEN <expression> THEN result-1
WHEN <expression> THEN result-2
ELSE
Result-n
END
Exemplo
Considere a seguinte tabela de funcionários.
EmployeeNo | Primeiro nome | Último nome | Data de adesão | Departamento Não | Data de nascimento |
---|---|---|---|---|---|
101 | Mike | James | 27/03/2005 | 1 | 05/01/1980 |
102 | Robert | Williams | 25/04/2007 | 2 | 05/03/1983 |
103 | Peter | Paulo | 21/03/2007 | 2 | 01/04/1983 |
104 | Alex | Stuart | 01/02/2008 | 2 | 06/11/1984 |
105 | Robert | James | 04/01/2008 | 3 | 01/12/1984 |
O exemplo a seguir avalia a coluna DepartmentNo e retorna o valor 1 se o número do departamento for 1; retorna 2 se o número do departamento for 3; caso contrário, ele retorna o valor como departamento inválido.
SELECT
EmployeeNo,
CASE DepartmentNo
WHEN 1 THEN 'Admin'
WHEN 2 THEN 'IT'
ELSE 'Invalid Dept'
END AS Department
FROM Employee;
Quando a consulta acima é executada, ela produz a seguinte saída.
*** Query completed. 5 rows found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo Department
----------- ------------
101 Admin
104 IT
102 IT
105 Invalid Dept
103 IT
A expressão CASE acima também pode ser escrita da seguinte forma, que produzirá o mesmo resultado acima.
SELECT
EmployeeNo,
CASE
WHEN DepartmentNo = 1 THEN 'Admin'
WHEN DepartmentNo = 2 THEN 'IT'
ELSE 'Invalid Dept'
END AS Department
FROM Employee;
COALESCE
COALESCE é uma instrução que retorna o primeiro valor não nulo da expressão. Ele retorna NULL se todos os argumentos da expressão forem avaliados como NULL. A seguir está a sintaxe.
Sintaxe
COALESCE(expression 1, expression 2, ....)
Exemplo
SELECT
EmployeeNo,
COALESCE(dept_no, 'Department not found')
FROM
employee;
NULLIF
A instrução NULLIF retorna NULL se os argumentos forem iguais.
Sintaxe
A seguir está a sintaxe da instrução NULLIF.
NULLIF(expression 1, expression 2)
Exemplo
O exemplo a seguir retorna NULL se o DepartmentNo for igual a 3. Caso contrário, ele retornará o valor DepartmentNo.
SELECT
EmployeeNo,
NULLIF(DepartmentNo,3) AS department
FROM Employee;
A consulta acima retorna os seguintes registros. Você pode ver que o funcionário 105 tem o número do departamento. como NULL.
*** Query completed. 5 rows found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo department
----------- ------------------
101 1
104 2
102 2
105 ?
103 2