تعيين قيم متغير
-
05-07-2019 - |
سؤال
وأنا متأكد من أن هذا شيء بسيط، ولكن أنا لا يمكن أن يبدو لأنها من أصل الرقم. لماذا لا هذا العمل الرمز؟
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
وأود فقط أن يتم تعيين قيمة تاريخ سابق، اليوم أو في نهاية الفترة، لenddate.
ويمكن للشخص لي نقطة في الاتجاه الصحيح؟ أنا باستخدام SQL 2000.
المحلول
ووSELECT 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
نصائح أخرى
SELECT @enddate = CASE
WHEN getdate() < @FirstSaturday THEN getdate()
ELSE @FirstSaturday
END
CASE في T-SQL هو تعبير (مثل ?:
في C)، وليس فرعا التحكم في التدفق مثل IF
.
وإضافة الكلمة "النهاية" إلى نهاية البيان حالة
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
لا تنتمي إلى StackOverflow