DB2 - Banco de dados - Instruções e Funções Básicas - CASE expressions


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

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.

Exemplo 1

Suponha que você queira exibir o número do funcionário, o nome e o nível de escolaridade de todos os representantes de campo na tabela EMP.
Os níveis de educação são armazenados na coluna EDL como números inteiros pequenos, mas você deseja substituir os valores nesta coluna por frases mais descritivas.
Use a seguinte consulta:
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.

Exemplo 2

Se você deseja determinar a proporção de comissões de funcionários para seus salários, você pode executar esta consulta:
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.

Veja também:



© Copyright IBM Corp.