1
resposta

Me perdi no case!

Olá galera! Precisando de uma ajuda...

Precisando usar o case após um datediff, mas da erro.

select DATEDIFF (day, GETDATE(), DataDeVencimento) as Dias, CASEWHEN Dias <= 20 THEN 'PERIGO' WHEN Dias <= 40 THEN 'ATENÇÃO' ELSE 'TRANQUILO' END from Certificados

o comando... select DATEDIFF (day, GETDATE(), DataDeVencimento) as Dias from Certificados trás o resultado correto.

Obrigado pela atenção!

1 resposta

Oii, tudo bem?

Então, você está tentando aplicar o CASE em cima do valor que você está chamando de DIAS, nesse caso, você precisa colocar a função no lugar.

Ficaria, assim:

select DATEDIFF (day, GETDATE(), DataDeVencimento) as Dias, 
CASE 
WHEN DATEDIFF (day, GETDATE(), DataDeVencimento) <= 20 THEN 'PERIGO' 
WHEN DATEDIFF (day, GETDATE(), DataDeVencimento) <= 40 THEN 'ATENÇÃO' 
ELSE 'TRANQUILO' END 
from Certificados

o CASE usando DIAS funcionaria se ele fosse uma das colunas da tabela, e não o novo valor que você está tentando achar.

Espero ter ajudado :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software