在sql中找到一个范围内的最大值

时间:2015-05-05 15:20:24

标签: sql sql-server

我有一张桌子

2006 .5
2007 .6
2008 .4
2009 .7
2010 .4

我给了一个范围,例如。 2006-2010

我想要这样的结果:每当存在最大值时,以下年份将具有最大数量,除非下一个数字大于之前的数字。

2006-2010  2006 .5
2006-2010  2007 .6
2006-2010  2008 .6
2006-2010  2009 .7
2006-2010  2010 .7

所以这就是我的尝试:

我使用了交叉连接并获得了

2006-2010  2006 .5
2006-2010  2007 .6
2006-2010  2008 .4
2006-2010  2009 .7
2006-2010  2010 .4  

但是,我没有得到正确的结果。有什么我应该用来获得最大值比前一年。不确定我是否能够很好地解释这一点。

1 个答案:

答案 0 :(得分:1)

试试这个

create table dates (year int, val float);
insert into dates values (2006,.5); insert into dates values (2007,.6); insert into dates values (2008,.4); insert into dates values (2009,.7); insert into dates values (2010,.4);
select * , (select round(max(val),1) from dates d2 where d2.year<=d1.year) as max  from dates d1;