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
这个没问题的,我式过了我在本机上测试过了阿,没问题啊

解决方案 »

  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 即可。
      

  2.   

    楼上说的没错,只取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
      

  3.   

    不好意思,上面多了个逗号order by v desc,time desc
      

  4.   

    再请教寻一下,oracle中的Sql应该怎么学习?哪儿有找到文档啊?
      

  5.   

    去ORACLE官网下载,不过都是英文的
    http://www.oracle.com/technology/documentation/oracle9i_arch_901.html