需要一個開始時間declare @Start datetime
set @Start='2008-07-21 00:00:00'
select datediff(n,@Start,時間列)/10--這個第10分鐘作為group by ---------datepart(n,時間)--只計算分鐘

解决方案 »

  1.   

    select id,avg(data)
    from table 
    where datetime >= dateadd(minute,-10,getdate())这个语句是取最近10分钟的平均值的
      

  2.   

    谢谢回答!
       开始时间就是数据表的最小时间。我就是指个循环时间段处理不好。
    我定义了这样一个存储过程:
    declare @starttime datetime,@endtime datetime 
    select avg(a1 ) into table_temp
    from table where between @starttime and @endtime
    该怎样去解决循环时间问题?
      

  3.   

    declare @t table (t datetime,v numeric(18,2))
    insert into @t
    select '2008-07-21 08:10:20',5 union 
    select '2008-07-21 08:10:25',9 union 
    select '2008-07-21 08:22:10',15 union 
    select '2008-07-21 08:40:35',4 union 
    select '2008-07-21 08:41:55',20 union 
    select '2008-07-21 09:19:06',11 union 
    select '2008-07-21 11:10:20',13 union 
    select '2008-07-21 11:13:44',8select dateadd(mi,gp*10,t) as bt,dateadd(mi,gp*10+10,t) as et,avg(v) as v
    from (
    select a.t,b.v,ceiling(datediff(mi,a.t,b.t)/10) as gp
    from (select min(t) as t from @t) a, @t b
    ) c
    group by t,gp/*
    bt                                      et                                      v                                        
    ---------------------------------------- -------------------------------------- ---------------------------------------- 
    2008-07-21 08:10:20.000                 2008-07-21 08:20:20.000                  7.000000
    2008-07-21 08:20:20.000                 2008-07-21 08:30:20.000                 15.000000
    2008-07-21 08:40:20.000                 2008-07-21 08:50:20.000                 12.000000
    2008-07-21 09:10:20.000                 2008-07-21 09:20:20.000                 11.000000
    2008-07-21 11:10:20.000                 2008-07-21 11:20:20.000                 10.500000(所影响的行数为 5 行)*/