Página 1 de 1

CASE WHEN versus DECODE

Enviado: Sáb, 15 Mai 2004 8:28 pm
por dr_gori
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:

Selecionar tudo

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... :-)

Selecionar tudo

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> 

Enviado: Ter, 18 Mai 2004 7:39 pm
por dr_gori
Mais uma forma de se fazer isso SEM case-when:

Selecionar tudo

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

Re: CASE WHEN versus DECODE

Enviado: Seg, 17 Ago 2020 9:37 am
por fabissilva
bem prático.
melhor do que utilizar o case.

Re: CASE WHEN versus DECODE

Enviado: Sáb, 29 Ago 2020 10:06 am
por tiago_pimenta
:-o