Home - www.devmedia.com.br


Como colocar uma estrutura condicional em um Select:


Os comandos SQL costumam ser muito maleáveis, só que muitas vezes entramos em certas situações realmente desagradáveis. Para reajustar certas faixas salariais, sem possuir uma tabela com as mesmas siga o exemplo abaixo:

         FAIXAS SALARIAIS

             REAJUSTES

1,00    - 1999,00

5%

 2000,00 - 2499,00

10%

2500,00 - 3000,00

15%

Na query serão utilizados os comandos DECODE (o nosso if sql) e o comando SIGN que retorna valores para números positivos e negativos.

SELECT DECODE(SIGN(SALARIO - 2000),-1,((SALARIO*0.05)+SALARIO), DECODE(SIGN(SALARIO - 2500),-1,((SALARIO*0.10)+SALARIO), ((SALARIO*0.15)+SALARIO))) SALARIO FROM SALARIO_FUNCIONARIO

Obs.: O comando Sign retorna -1 para negativo e 1 para positivo então temos o seguinte raciocínio.

1º CONDICIONAL
----------------

1º LINHA DO SELECT = > SALARIO = 1900,00

1900 - 2000 = - 100 = > SIGN = -1 ENTÃO REAJUSTE DE 5%

2º LINHA DO SELECT = > SALARIO = 2400,00

2400 - 2000 = 400 = > SIGN = 1 ENTÃO PULAR PARA O 2º CONDICIONAL

3º LINHA DO SELECT = > SALARIO 3000,00

3000 - 2000 = 1000 = > SIGN = 1 ENTÃO PULAR PARA O 2º CONDICIONAL

                                                                                                                    

Por Adriana Ferreira
adriana@sqlmagazine.com.br

 

  O Otimizador do Oracle para desenvolvedores III    
  O Otimizador do Oracle para desenvolvedores II    
  O Otimizador do Oracle para desenvolvedores I – Introdução    
  Envio de E-mails contendo anexos utilizando PL/SQL e JSP (Java Stored Procedure)    
  Preservando Estatísticas no Oracle    
  Introdução ao PLSQL    
  Condicional em um SELECT    
  Enviando e-mail com Oracle    
  Introdução ao Oracle    
     

 

Todos os direitos reservados: DevMedia Group
SQL Magazine - 2004