sql语句筛选查询问题查询结果为:
=========================================================
id         批准号          地点          时间
6541      XZ10631         上海        2009-12-7 8:49:18
6541      XZ10844         成都        2010-1-16 16:30:36
6541      XZ12631         杭州        2013-7-12 16:16:37
7328      XZ20452         重庆        2010-9-23 17:19:23
7328      XZ22351         福州        2010-1-16 15:23:25
7328      XZ27153         广州        2013-7-12 15:17:40
=========================================================希望查询结果为(每个id取最近一个时间的记录):
=========================================================
id         批准号          地点          时间
6541      XZ12631         杭州        2013-7-12 16:16:37
7328      XZ27153         广州        2013-7-12 15:17:40
=========================================================由于数据量比较大,不能手工删除记录。谢谢。最近时间记录 最近

解决方案 »

  1.   

    select * from table where (id,时间) in (select id,max(时间) from t group by id)
      

  2.   

    with
    t as (select 6541 id,'XZ10631'批准号,'上海'地点,to_date('2009-12-7 8:49:18','yyyy-mm-dd hh24:mi:ss')时间 from dual
         union all 
         select 6541 id,'XZ10844'批准号,'成都'地点,to_date('2010-1-16 16:30:36','yyyy-mm-dd hh24:mi:ss')时间 from dual
         union all 
         select 6541 id,'XZ12631'批准号,'杭州'地点,to_date('2013-7-12 16:16:37','yyyy-mm-dd hh24:mi:ss')时间 from dual
         union all 
         select 7328 id,'XZ10631'批准号,'重庆'地点,to_date('2010-9-23 17:19:23','yyyy-mm-dd hh24:mi:ss')时间 from dual
         union all 
         select 7328 id,'XZ22351'批准号,'福州'地点,to_date('2010-1-16 15:23:25','yyyy-mm-dd hh24:mi:ss')时间 from dual
          union all 
         select 7328 id,'XZ27153'批准号,'广州'地点,to_date('2013-7-12 15:17:40','yyyy-mm-dd hh24:mi:ss')时间 from dual)
    select * 
    from (select t.* ,row_number()over(partition by id order by 时间 desc)rn from t)
    where rn=1;