2

我有这种情况:

一张带有 entry_time (datetime) 和 value (float) 的表。我以相同或不同的值以不同的时间间隔检索时间戳。像这样:

date_time   value
2012-12-08  77252,8046875
2012-12-08  77252,8046875
2012-12-22  77413,2734375
2012-12-24  0
2012-12-24  0
2012-12-24  0
2012-12-24  0
2012-12-24  68549,4453125
2012-12-24  0
2012-12-24  79194,703125
2012-12-26  0
2012-12-26  77252,8046875
2013-01-05  0
2013-01-05  0
2013-01-26  63780
2013-02-08  10362,27734375
2013-02-16  0
2013-03-04  76400
2013-03-20  0
2013-03-20  76400 

我需要的是从第一个日期按天重复第一个值,直到下一个值(即使是相同的)。当每天有多个值时,要选择的最大值。在第一次重复之后,当它到达第二个日期时,该过程以第二个值重复,直到第三个日期,依此类推。

像这样的东西:

date_time   value
2012-12-22  77413,2734375
2012-12-23  77413,2734375
2012-12-24  79194,703125
2012-12-25  79194,703125
2012-12-26  77252,8046875
2012-12-27  77252,8046875
2012-12-28  77252,8046875
.............................
2013-01-05  0
2013-01-06  0
.............................
2013-01-25  0
2013-01-26  63780
.............................

预先感谢您的回答!

德拉戈斯。

4

1 回答 1

4

SQLFiddle 演示

with t_max_min 
as 
(select min(date_time) min_dt, 
        max(date_time) max_dt  
        from t)

, period as
(
   select min_dt dt from t_max_min
   union all
   select dt+1 from period 
      where dt<(select max_dt from t_max_min)

)
,t_values as
(
  select date_time, max(value) value 
      from t group by date_time
)

select dt as date_time,
       ISNULL((select TOP 1 value 
                     from t_values
                     where date_time<=dt

                     order by date_time desc)
              , 0) value
    from period
order by dt
于 2013-04-19T10:41:16.393 回答