2012-10-24 37 views
0

我试图用一个case语句设置变量值来确定财政年度,取决于一个月,但我得到财政年度Null值返回:牛逼SQL的使用情况下,当在参数

declare 
@Costcentre varchar(50) 
,@dt date 
,@dty int 
,@dtm int 

select @Costcentre = 'CAM' 
SELECT @dt = '2012-09-30' 
select @dtm = DATEPART(month,@dt) 
select 
@dty = case when @dtm between 4 and 12 then DATEPART(year,@dt) + 1 end 
,@dty = case when @dtm between 1 and 3 then DATEPART(year,@dt) end 


select @dty 

回答

2

你只需要分配@dty一次:

select @dty = case 
    when @dtm between 4 and 12 then DATEPART(year,@dt) + 1 
    when @dtm between 1 and 3 then DATEPART(year,@dt) 
end 

否则,你只是覆盖@dty如果@dtm不是1和3之间