select top 10000 identity(int,1,1) id into #a from sysobjects a,sysobjects b,sysobjectsdeclare @开始时间 datetime,@结束时间 datetime
select @开始时间=min(时间),@结束时间=max(时间) from 你的表 where 条件='xx'--得到 开始时间---结束时间所有的天
select dateadd(day,id,@开始时间) 天 from #a where dateadd(day,id,@开始时间)<@结束时间--得到 开始时间---结束时间所有的小时
select dateadd(hh,id,@开始时间) 小时 from #a where dateadd(hh,id,@开始时间)<@结束时间--结合你的统计
select a.时间,isnull(b.你的数据,0) from (select dateadd(day,id,@开始时间) 时间 from #a where dateadd(day,id,@开始时间)<@结束时间) a left join b on a.时间=b.时间

解决方案 »

  1.   

    select top 10000 identity(int,1,1) id into #a from sysobjects a,sysobjects b,sysobjectsdeclare @开始时间 datetime,@结束时间 datetime
    select @开始时间=min(时间),@结束时间=max(时间) from 你的表 where 条件='xx'--得到 开始时间---结束时间所有的天
    select dateadd(day,id,@开始时间) 天 from #a where dateadd(day,id,@开始时间)<@结束时间--得到 开始时间---结束时间所有的小时
    select dateadd(hh,id,@开始时间) 小时 from #a where dateadd(hh,id,@开始时间)<@结束时间--结合你的统计
    select a.时间,isnull(b.你的数据,0) from (select dateadd(day,id,@开始时间) 时间 from #a where dateadd(day,id,@开始时间)<@结束时间) a left join b on a.时间=b.时间