不能这样写,请用动态语句:如
 
...............
declare @where varchar(8000)
if @stdate is null
  set @where=''
else
  set @where=' when tradedate between '''+@stdate+''' and '''+@enddate+''''........

解决方案 »

  1.   

    ...............declare @where varchar(8000)
      set @where='select * from tblname '
    if @stdate is not null
      set @where=' when tradedate between '''+@stdate+''' and '''+@enddate+''''
     exec(@where) 
    ........
      

  2.   

    where   isnull(tradedate,getdate()) between isnull(@stdate,getdate()) and isnull(@enddate,getdate())
      

  3.   


    declare @s varchar(20),@e varchar(20)
    --select @s='2001/5/5' ,@e='2005/9/9'
    select * from jobmain  where  reqdate between isnull(@s,getdate()-1000) and isnull(@e,getdate()+1)
      

  4.   

    受chenqianlong启发
    where tradedate between isnull(@stdate,(select min(tradedate) as mindate from V_sellbln)) and isnull(@enddate,(select max(tradedate) as maxdate from V_sellbln))