Ir para conteúdo
fimiani_lucas

IF dentro de um SELECT

Recommended Posts

Bom dia,

Estou iniciando neste mundo de SQL, portanto minha dúvida pode ser um pouco básica. =/

Gostaria incluir clausulas IF dentro de um SELECT e fazer cálculos e não estou conseguindo realizar.

Exemplo:

SELECT

IF A.CARGO = GERENTE

A.SALARIO + A.ABONO AS TOTAL_SALARIO

ELSE

A.SALARIO AS TOTAL_SALARIO

END-IF

FROM TABELA_FUNCIONARIOS

WHERE STATUS_FUNC = ATIVO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

Segue um exemplo abaixo

SELECT  
  CASE 
    WHEN A.CARGO = 'GERENTE'  THEN A.SALARIO + A.ABONO
    ELSE A.SALARIO
  END AS TOTAL_SALARIO
FROM
  TABELA_FUNCIONARIOS
WHERE 
  STATUS_FUNC = ATIVO

Mais informações você pode consultar na documentação do oracle: http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Geovani,

Eu queria fazer um encadeamento de IFs... e não encontrei no manual da Oracle.

Exemplo:

IF TIPO_PROYECTO = 1 OR PORCENTAGEM_EXITO > 95%

MOVE GANHADO TO DESCRICAO_PROJETO

ELSE

IF FLAG = 1

MOVE EMPATADO TO DESCRICAO_PROJETO

ELSE

MOVE PERDEU TO DESCRICAO_PROJETO

END-IF

END-IF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este ninho de ifs seriam em um select ou procedure plsql ?

seria algo como (select)

select 
(CASE WHEN (TIPO_PROYECTO = 1 OR PORCENTAGEM_EXITO > 95) THEN 'GANHADO'
      WHEN (FLAG = 1) THEN 'EMPATADO'
      ELSE 'PERDEU' END) DESCRICAO_PROJETO
from ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo

SELECT (CASE WHEN DATA_TYPE = 'CHAR'
             THEN (CASE WHEN DATA_LENGTH > 7 THEN 1 ELSE 0 END)
             ELSE 0 END)
FROM USER_TAB_COLUMNS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Poderiam me ajudar com a expressão abaixo?

 

Necessito fazer um case ou um if dentro de um select com a expressão "Diferente".

 

 IF (RF.ACAO_IN_CODIGO <> 28) then 
    sum (RF.MOV_RE_VALORCREMOE)
 ELSE
   RF.MOV_RE_VALORCREMOE
  end as valor_retencoes

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  sum(case when (RF.ACAO_IN_CODIGO <> 28) then RF.MOV_RE_VALORCREMOE
           else RF.MOV_RE_VALORCREMOE end)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi! Gostaria de ajuda tb se possivel...

preciso fazer uma verificação do tipo:

 

max(case when rcc_attribute = 'firstName' then rcc_new_value 
         else (select max(cus_last_name) 
               from cst_customers 
               where idn_no = '&&CPF') 
         end) new_firstName,


 

só que essa função não funciona no oracle... :( poderiam me ajudar a ver o erro, por favor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.