可以实现,我给个大概思路:
首先:你找出最早和最近的两条数据对应的时间,然后,利用datediff函数计算这两个时间
     相差多少个小时.其次:利用循环,从最近一条数据对应的时间起,向前推进,每循环一次向前减一个小时,可以
     使用函数dateadd()来实现.

解决方案 »

  1.   

    楼上讲的方法最好是用存储过程来实现:
    --测试:create  table data(Mvalue decimal(18,4), Mdate Datetime)
    insert into data
    select 12.1202 ,' 2005-02-28 07:23:00.000'
    union all 
    select 12.3443 ,' 2005-02-28 06:21:00.000'
    union all
    select 11.1212  ,'2005-02-28 08:22:00.000'
    union all
    select 23.2324,'  2005-02-28 05:18:00.000'
    union all
    select 11.1212,'  2005-02-28 04:22:00.000'
    gocreate proc search55
    as
    declare  @cc table(a decimal(18,4), b Datetime)
    declare @time datetime
    declare @i int
    set @i=1
    select top 1 @time=Mdate from data order by Mdate desc
    insert  into @cc select top 1 * from data order by Mdate desc
    while @i<13
     begin
          exec('select * into #b from @data where datediff(hour,Mdate,'+@time+')=1')
          set @i=@i+1 
     endselect * from @cc
    go
      

  2.   

    exec('select * into #b from @data where datediff(hour,Mdate,'+@time+')=1')
    改为:
    exec('select * into #b from @data where datediff(hour,Mdate,'+@time+')='+@i)