2009-12-19 5 views
0

J'ai déclaré @date variablesComment puis-je réécrire cette instruction?

SELECT @date = CASE 
     WHEN MAX(dt) IS NULL THEN '31/12/2009' 
     ELSE MAX(dt) + 1 
    END 
    FROM mytab 

Un extrait de code où je suis en utilisant la variable locale

CASE 
    WHEN MAX(DateValue)= @date THEN NULL 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 

Je ne veux pas utiliser la variable locale @date dans la déclaration de cas, mais vouloir obtenir le même effet. J'ai essayé:

CASE 
    WHEN MAX(DateValue)= @isnull(dt, '31/12/2009') 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 

mais recevez une erreur. Une idée de se débarrasser de cela?

Répondre

1

OK, tout d'abord vous devez utiliser

ISNULL(dt, '31/12/2009') 

Sans @.

Deuxièmement, vous devrez nous fournir une requête plus complète à vérifier. En outre, spécifiez l'erreur que vous recevez.

Vous pouvez également inclure la sélection d'origine dans la deuxième sélection. Quelque chose comme ceci:

CASE 
    WHEN MAX(DateValue)= (SELECT CASE WHEN MAX(dt) IS NULL THEN '31/12/2009' ELSE MAX(dt) + 1 END FROM mytab) 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 
0
CASE 
    WHEN MAX(DateValue)= isnull(dt, '31/12/2009') 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 
Questions connexes