根据日期排序,然后取第一条记录
select * from (select * from ...... order by 日期 desc) where rownum=1;

解决方案 »

  1.   

                                                                                                
    是这样的,两个表a和b,我用这样语句查询select * from network_checkin a,network_adjustlog b where a.id=b.id(+)会有很多的重复项,在a 里面有个属性是creattime,请问如何根据creattime条件显示最近的一条记录,你那个我试过,好像有错误,也许是我写错了,请教下,可不可以再写的详细点,谢谢 了
      

  2.   

    百度 oracle  ROW_NUMBER() OVER
      

  3.   

    百度 oracle  ROW_NUMBER() OVER
      

  4.   

    百度 oracle  ROW_NUMBER() OVER 
      

  5.   

    方法一堆,最后一种执行速度应该最快,但是写起来有点麻烦
    select id,ID,日期
    from (
        select id,ID,日期,row_number() over(partition by ID order by 日期 DESC) rn
        from T
    )where rn=1select * from T T1
    WHERE NOT EXISTS(SELECT 1 FROM T WHERE ID=T1.ID AND 日期>T1.日期)
     
    select * from T
    WHERE (ID,日期) IN (SELECT ID,MAX(日期) FROM T GROUP BY ID)
     
    SELECT ID,MAX(日期),
    MAX(字段1)KEEP(DENSE_RANK LAST ORDER BY 日期),
    MAX(字段2)KEEP(DENSE_RANK LAST ORDER BY 日期)
    ……--其他字段同上
    FROM T GROUP BY ID
      

  6.   

    嗯,刚弄oracel,不太熟,按你写的有点套不上去,是这样的,两个表a和b,我用这样语句查询select * from network_checkin a,network_adjustlog b where a.id=b.id(+)会有很多的重复项,在a 里面有个属性是creattime,请问如何根据creattime条件显示最近的一条记录,那该怎么写啊