我有这种情况:
一个带有entry_time(datetime)和值(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
.............................
提前感谢您的回答!
德拉戈什。
答案 0 :(得分:4)
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