FAQ Procura Membros Registre-se Perfil MP's Login/Out
Veja também:
Usar case em select
select com elsif
Usar CASE na clausula WHERE.
Select Condicional
O que está errado no select ?
[DICA] DECODE x CASE
Realizar select dentro de um case.

CASE WHEN versus DECODE

 
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> SQL
Mensagem Autor
Enviada: Sáb, 15 Mai 2004 8:28 pm     Assunto: CASE WHEN versus DECODE

As vezes o CASE WHEN quebra o galho... Mas o que fazer quando não é possível usá-lo? (como nas versões anteriores ao 8i, e no PL*SQL anterior ao 9i). Simplex!

Eis o nosso query:
Código:
SQL> select
  2    empno
  3  , sal
  4  , case
  5      when sal<1000  then 'SALARIO BAIXO'
  6      when sal>=1000 then 'SALARIO ALTO'
  7    end comentario
  8  from emp
  9  /

     EMPNO        SAL COMENTARIO
---------- ---------- -------------
      7369        800 SALARIO BAIXO
      7499       1600 SALARIO ALTO
      7521       1250 SALARIO ALTO
      7566       2975 SALARIO ALTO
      7654       1250 SALARIO ALTO
      7698       2850 SALARIO ALTO
      7782       2450 SALARIO ALTO
      7788       3000 SALARIO ALTO
      7839       5000 SALARIO ALTO
      7844       1500 SALARIO ALTO
      7876       1100 SALARIO ALTO
      7900        999 SALARIO BAIXO
      7902       3000 SALARIO ALTO
      7934       1000 SALARIO ALTO


E agora, um query exatamente IGUAL sem o tal case-when... Smile
Código:
SQL> select
  2    empno
  3  , sal
  4  , decode(sign(sal-1000), -1, 'SALARIO BAIXO', 'SALARIO ALTO')
  5  from emp
  6  /

     EMPNO        SAL DECODE(SIGN(S
---------- ---------- -------------
      7369        800 SALARIO BAIXO
      7499       1600 SALARIO ALTO
      7521       1250 SALARIO ALTO
      7566       2975 SALARIO ALTO
      7654       1250 SALARIO ALTO
      7698       2850 SALARIO ALTO
      7782       2450 SALARIO ALTO
      7788       3000 SALARIO ALTO
      7839       5000 SALARIO ALTO
      7844       1500 SALARIO ALTO
      7876       1100 SALARIO ALTO
      7900        999 SALARIO BAIXO
      7902       3000 SALARIO ALTO
      7934       1000 SALARIO ALTO
SQL>


dr_gori
Moderador
Moderador


Registrado em: Seg, 3 de Mai de 2004
Mensagens: 3222
Cidade - UF: Porto Alegre - RS


Enviada: Ter, 18 Mai 2004 7:39 pm    

Mais uma forma de se fazer isso SEM case-when:

Código:
select
  empno
, sal
, decode(greatest(sal,1000), 1000, 'SALARIO BAIXO', 'SALARIO ALTO')
from emp
/

_________________
Thomas F. G.
Campanha: Faça uma pesquisa antes de perguntar!!!
dr_gori
Moderador
Moderador


Registrado em: Seg, 3 de Mai de 2004
Mensagens: 3222
Cidade - UF: Porto Alegre - RS


Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    glufke.net - Índice do Fórum -> SQL Todos os horários são GMT - 3 Hours
Página 1 de 1

 
 
. .