1 votes

Définir les valeurs des variables

Je suis sûr qu'il s'agit de quelque chose de simple, mais je n'arrive pas à le comprendre. Pourquoi ce code ne fonctionne-t-il pas ?

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 que la valeur de la date antérieure, aujourd'hui ou la fin de la période, soit assignée à @enddate.

Quelqu'un peut-il m'indiquer la bonne direction ? J'utilise SQL 2000.

3voto

Remus Rusanu Points 159382
SELECT @enddate = CASE
WHEN getdate() < @FirstSaturday THEN  getdate()
ELSE  @FirstSaturday
END

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

1voto

Charles Bretana Points 59899

Ajouter le mot-clé "End" à la fin de l'instruction Case

 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

1voto

AnthonyWJones Points 122520

En SELECT CASE n'a pas 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X