有一表姓名 体检日期 体检结果
AAA  2003-1-10   OK
BBB  2003-1-10   OK
AAA  2003-4-10   OK
CCC  2003-6-10   OK
CCC  2003-9-10   OK
BBB  2003-9-12   FAIL
AAA  2003-9-13   OK想通过一查询语句得到下表
姓名 体检日期 体检结果
AAA  2003-9-13   OK
BBB  2003-9-12   FAIL
CCC  2003-9-10   OK请问如何实现

解决方案 »

  1.   

    select 姓名, 体检日期 ,体检结果 from 表名 Group by 姓名, 体检日期 ,体检结果
      

  2.   

    结果却是 aaa          2003-1-10       ok        
    aaa          2003-4-10       ok        
    aaa          2003-9-13       ok        
    bbb          2003-1-10       ok        
    bbb          2003-9-12       fail      
    ccc          2003-6-10       ok        
    ccc          2003-9-10       ok
      

  3.   

    select 姓名, 体检日期 ,体检结果 from 表名 where 体检日期 >=to_date('2003-08-31','yyyy-mm-dd') and 体检日期 <=to_date('2003-09-30','yyyy-mm-dd');
      

  4.   

    select 姓名, 体检日期 ,体检结果 from 表名 Group by 姓名, 体检日期 ,体检结果  order by 体检日期 desc
      

  5.   

    select 姓名, 体检日期 ,体检结果 from 表名 where 体检日期 in (select max(体检日期) from 表名 group by 姓名)
      

  6.   

    oracle可以这样写
    select 姓名, 体检日期 ,体检结果 from 表名 
    Group by 姓名, 体检日期 ,体检结果  
    where rownum<=3
    order by 体检日期 desc