现有一个Test表
I_NO1    I_NO2     I_NO3
C1        5         A
C1        2         B
C2        3         C
C3        4         D
现在要实现,如果I_NO1相同就取的I_NO2大的那条.也就是要取得
C1    5    A
C2    3    C
C3    4    D
请教SQL文如何书写??!

解决方案 »

  1.   

    create table test(I_NO1 varchar2(10),I_NO2 varchar2(10),I_NO3 varchar2(10));
    insert into test values('C1','5','A');
    insert into test values('C1','2','B');
    insert into test values('C2','3','C');
    insert into test values('C3','4','D');
    commit;select t1.I_NO1,t1.I_NO2,t1.I_NO3 from test t1,
    (select I_NO1,max(I_NO2) I_NO2 from test group by I_NO1) t2
    where t1.I_NO1=t2.I_NO1 and t1.I_NO2=t2.I_NO2;
      

  2.   

    select t.I_NO1,t.I_NO2,t.I_NO3 from Test t,(select I_NO1,max(I_NO2) as I_NO2 from Test Group by I_NO1) t2
    where t.I_NO1=t2.I_NO1 and t.I_NO2=t2.I_NO2
      

  3.   

    select * from 
    (
    select row_number() over (partition by I_No1 ) rn,t.* from Test t
    )tt
    where rn=1