2009-09-09 137 views
1

我确定这是简单的,但我似乎无法弄清楚。为什么这个代码不工作?设置变量值

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

回答

1

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 
1

关键字 '终结' 添加到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 
3
SELECT @enddate = CASE 
WHEN getdate() < @FirstSaturday THEN getdate() 
ELSE @FirstSaturday 
END 

情况下,T-SQL结束时的表情(如?:在C),而不是流量控制分支,如IF