字段为 id,value,date现查询一时间段eg:select date,sum(value)  from table where between '2011-06-01' and '2011-06-20' group by date这之间只有部分日期有数据,但查出来的结果是如果没有数据的填充为0,求指点!

解决方案 »

  1.   

    select a.dt,sum(isnull(b.value,0)) from (
    select dateadd(d,number,'2011-06-01')dt from master..spt_values where type='p' where dateadd(d,number,'2011-06-01')<='2011-06-20'
    )a left join tb b on a.dt=b.date
    group by a.dt
      

  2.   

    select
     a.date,sum(isnull(b.value,0)) as [value] 
    from 
     (select
        dateadd(dd,number,'2011-06-01') as date 
      from
      master..spt_values where type='p' where dateadd(d,number,'2011-06-01')<='2011-06-20')a
    left join
     tb b 
    on
     a.date=b.date
    group by
     a.date
      

  3.   

    select date,sum(value) from table where (date between '2011-06-01' and '2011-06-20')  or (date is null ) group by date试试
      

  4.   

    select date,sum(isnull(value,0)) from table where date between '2011-06-01' and '2011-06-20' group by date
      

  5.   

    谢谢各位朋友,问题已经搞定(1,2楼正解) 
    不过
    where type='p' and dateadd(d,number,'2011-06-01')<='2011-06-20'
      

  6.   

    利用left join将空值去掉,思路不错,利用spt_values获取时间列表很少用,学习了。