não considerar o dia anterior ao dia atual para calculo de dias em atraso

12/03/2015

0

Bom dia

Alguém pode me indicar onde está o erro nessa sintaxe?

case when DATEDIFF (day,MAX (ROD.DT_RODADA), DATEADD (day,-1, getdate())) then 0
else datediff(DAY, MAX (ROD.DT_RODADA), GETDATE ()) END AS 'DIAS_ATRASO'

Estou calculando os dias em atraso, mas caso a última data seja anterior ao dia atual, o resultado deve ser = 0

utilizando apenas essa condição datediff(DAY, MAX (ROD.DT_RODADA), GETDATE ()) dá certo para quem está atrasado a mais de 1 dia, mas quem teve a última data anterior a data atual me trás o resultado = 1 e preciso que traga 0

Obrigado
Marcio Carvalhal

Marcio Carvalhal

Responder

Posts

12/03/2015

Marcio Carvalhal

Ahhhh...a minha sintaxe apresenta esse erro An expression of non-boolean type specified in a context where a condition is expected, near 'then'.

acredito que é por causa da condição - 1, mas não estou conseguindo resolver
Responder

12/03/2015

Ignez Mello

Carvalhal, tudo bem?

Na verdade, está faltando o valor de comparação na cláusula WHEN

case when DATEDIFF (day,MAX (ROD.DT_RODADA), DATEADD (day,-1, getdate())) "= 0"
then 0
else datediff(DAY, MAX (ROD.DT_RODADA), GETDATE ())
END AS 'DIAS_ATRASO'

Na cláusula WHEN você calcula a diferença de dias entre a dt_rodada e o getdate(), mas não compara com nada. Eu coloquei = 0 apenas como exemplo, você precisa informar o valor que for mais adequado à sua query.

Ignez
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar