DB2 - Banco de dados - Instruções e Funções Básicas - CASE expressions
Você pode usar uma expressão CASE para executar expressões SQL de várias maneiras diferentes, dependendo do valor de uma condição de pesquisa.
Um uso de uma expressão CASE é substituir os valores em uma tabela de resultados por valores mais significativos.
Outro uso de uma expressão CASE é evitar que operações indesejáveis, como divisão por zero, sejam executadas em valores de coluna.
SELECT EMPNO, FIRSTNME, LASTNAME, CASE WHEN EDL <= 12 THEN 'HIGH SCHOOL OR LESS' WHEN EDL > 12 AND EDL<=14 THEN 'JUNIOR COLLEGE' WHEN EDL > 14 AND EDL<=17 THEN 'FOUR-YEAR COLLEGE' WHEN EDL > 17 THEN 'GRADUATE SCHOOL' ELSE 'UNKNOWN' END AS EDUCATION FROM EMP WHERE JOB='FLD';
A tabela de resultados se parece com o seguinte exemplo:
EMPNO FIRSTNME LASTNAME EDUCATION ====== ======== ======== ================= 000320 RAMLAL MEHTA FOUR-YEAR COLLEGE 000330 WING LEE JUNIOR COLLEGE 200340 ROY ALONZO FOUR-YEAR COLLEGE
A expressão CASE substitui cada pequeno valor inteiro de EDL com uma descrição da quantidade de educação de cada representante de campo. Se o valor de EDL for nulo, a expressão CASE substituirá a palavra UNKNOWN.
SELECT EMPNO, DEPT, COMM/SALARY AS "COMMISSION/SALARY", FROM EMP;
Esta instrução SELECT tem um problema, entretanto. Se um funcionário não ganhou nenhum salário, ocorre um erro de divisão por zero. Ao modificar a seguinte instrução SELECT com uma expressão CASE, você pode evitar a divisão por zero:
SELECT EMPNO, DEPT, (CASE WHEN SALARY=0 THEN NULL ELSE COMM/SALARY END) AS "COMMISSION/SALARY" FROM EMP;
A expressão CASE determina a relação entre comissão e salário apenas se o salário não for zero.