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


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


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