2009-09-09 6 views
1

Je suis sûr que c'est quelque chose de simple, mais je n'arrive pas à le comprendre. Pourquoi ce code ne fonctionne-t-il pas?Définir des valeurs de variable

DECLARE @FirstSaturday DATETIME 
DECLARE @ENDDATE DATETIME 

SELECT @FirstSaturday = min(RED1.DATE) 
FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1 
WHERE Period = 9 AND year = 2009 
SELECT CASE 
WHEN getdate() < @FirstSaturday 
THEN set @ENDDATE = getdate() 
ELSE SET @enddate = @FirstSaturday 


END 

Je veux simplement la valeur de la date antérieure, aujourd'hui ou à la fin de la période, à affecter à @EndDate.

Quelqu'un peut-il me diriger dans la bonne direction? J'utilise SQL 2000.

Répondre

1

Le SELECT CASE juste doesn de sens, essayez: -

DECLARE @FirstSaturday DATETIME 
DECLARE @ENDDATE DATETIME 

SELECT @FirstSaturday = min(RED1.DATE) 
FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1 
WHERE Period = 9 AND year = 2009 

SELECT @ENDDATE = CASE 
WHEN getdate() < @FirstSaturday 
THEN getdate() 
ELSE @FirstSaturday 
END 
1

Ajouter le mot-clé 'End' à la fin de la déclaration de cas

DECLARE @FirstSaturday DATETIME 
DECLARE @ENDDATE DATETIME 
SELECT @FirstSaturday = min(RED1.DATE) 
FROM REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED1 
WHERE Period = 9 
    AND year = 2009 

SELECT @ENDDATE = 
    Case 
     WHEN getdate() < @FirstSaturday 
     THEN getdate() 
     ELSE @FirstSaturday 
    End 
3
SELECT @enddate = CASE 
WHEN getdate() < @FirstSaturday THEN getdate() 
ELSE @FirstSaturday 
END 

CASE dans T-SQL est une expression (comme ?: en C), pas branche de contrôle de flux comme IF.

Questions connexes