Array
(
)

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

Carvalhal
   - 12 mar 2015

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

Carvalhal
   - 12 mar 2015

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

Ignez
|
MVP
    12 mar 2015

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