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
|