Teradata-CASE and COALESCE
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