http://community.csdn.net/Expert/topic/4022/4022157.xml?temp=.2631494
在以上帖子的问题中,出现了一个问题,就是取出的time,v中,出现了在同一年中的3月份,同是出现了两个最大值.如
time v
1994-3-25 25
19994-3-30 25
而我只想取第一个最大值及时间,该怎么写?
...全文
968打赏收藏
jxc(GameHeart) , zsfww1205,duanzilin(寻)请进
http://community.csdn.net/Expert/topic/4022/4022157.xml?temp=.2631494 在以上帖子的问题中,出现了一个问题,就是取出的time,v中,出现了在同一年中的3月份,同是出现了两个最大值.如 time v 1994-3-25 25 19994-3-30 25 而我只想取第一个最大值及时间,该怎么写?
楼上说的没错,只取1个就用row_number(),按你需要的日期排序就可以了
select time,v from
(
select time,v,row_number() over(partition by trunc(time,'MM') order by v desc,time,desc) rank_v from table1 where to_char(time,'MM') = '03'
)
where rank_v =1
select time,v from(select t.*,row_number() over(partition by to_char(time,'yyyy') order by v desc,time ) rn from test3 t where to_char(time,'mm')='03') where rn = 1;
没问题
只是不知道如果出现同月两个相同最大值的时候,你是想时间大的还是小的?
调整一下order by v desc,time 即可。
select * from
(
select t.*,row_number() over(partition by to_char(time,'yyyy') order by v desc,time) rownum1
from table1 t where to_char(time,'mm') = '03'
)
where rownum1 = 1
这个没问题的,我式过了