Teradata-CASE and COALESCE

anúncios

este capítulo explica o caso e as funções COALESCE da Teradata.

expressão de caso

expressão de caso avalia cada linha contra uma condição ou quando cláusula e retorna o resultado da primeira partida. Se não houver correspondências, então o resultado de outra parte do retornado.

sintaxe

segue – se a sintaxe da expressão do caso.

CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END

exemplo

considere a seguinte tabela de Empregados.

EmployeeNo Nome Sobrenome JoinedDate DepartmentNo Data De Nascimento
101 Mike Tiago 3/27/2005 1 1/5/1980
102 Robert Williams 4/25/2007 2 3/5/1983
103 Peter Paulo 3/21/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert Tiago 1/4/2008 3 12/1/1984

O exemplo a seguir avalia o DepartmentNo coluna e retorna o valor 1 se o número do departamento é 1; retorna 2 se o número do departamento é de 3; caso contrário, retorna o valor como inválido departamento.

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 de caso acima também pode ser escrita na seguinte forma que irá produzir o mesmo resultado que 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 declaração que devolve o primeiro valor não nulo da expressão. Devolve nulo se todos os argumentos da expressão forem avaliados como nulos. Seguir é a sintaxe.

sintaxe

COALESCE(expression 1, expression 2, ....) 

exemplo

SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;

NULLIF

a declaração de NULLIF devolve nulo se os argumentos forem iguais.

sintaxe

segue – se a sintaxe da declaração de NULLIF.

NULLIF(expression 1, expression 2) 

exemplo

o exemplo seguinte devolve nulo se o Departamento for igual a 3. Caso contrário, devolve o valor do Departamento.

SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;

a consulta acima devolve os seguintes registos. Você pode ver que o funcionário 105 tem o departamento no. como nulo.

*** 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
anúncios publicitários

Deixe uma resposta

O seu endereço de email não será publicado.