存储过程中
定义了2个变量
@BegDate  
@EndDate
@SQL
我想如果这个两个变量为空则查询所有的记录
SET @SQL ='1=1'
IF (@BegDate<>''AND @EndDate<>'')
SET @SQL=@SQL+' and AccDate between '+@BegDate+' and ' + @EndDate
如:select WarehouseID,AccDate,SUM(SaleAmt) AS Saleamt from #T where AccDate between @BegDate and @EndDate group BY WarehouseID,AccDateselect WarehouseID,AccDate,SUM(SaleAmt) AS Saleamt from #T where +@sql group BY WarehouseID,AccDate
这样要报错的 请问一下这个语句怎么写呢?

解决方案 »

  1.   

    set @sql=''
    IF (@BegDate<>''AND @EndDate<>'')
    begin
    SET @SQL=@SQL+' where AccDate between '+@BegDate+' and ' + @EndDate
    end
    exec ('select WarehouseID,AccDate,SUM(SaleAmt) AS Saleamt from #T '+@sql+' group BY WarehouseID,AccDate')这样试试呢
      

  2.   

    可以用if判断,也可以用isnull处理一下。
      

  3.   

    select WarehouseID,AccDate,SUM(SaleAmt) AS Saleamt from #T where 
    AccDate >=case when isnull(@BegDate,'')='' then AccDate else  @BegDate end
    and AccDate <=case when isnull(@EndDate,'')='' then AccDate else  @EndDate end仅供参考!
      

  4.   

    case when也可以啊
    http://blog.csdn.net/dba_huangzj/article/details/7684520广告时间