select * from (
select t.*,rank() over(partition by key1 order by key1,字段2,字段3,字段4 desc) rk
from t) tb
where rk=1;

解决方案 »

  1.   

    都是降序:
    select * from (
    select t.*,rank() over(partition by key1 order by key1 desc,字段2 desc,字段3 desc,字段4 desc) rk
    from t) tb
    where rk=1;
      

  2.   

    select t.key1,t.key2 ,t.字段2 ,t.字段3 ,t.字段4 from (select *,rank() over(partition by key1 order by key1 desc,字段2 desc,字段3 desc,字段4 desc) as rank from table) t where t.rank=1;
      

  3.   

    SQL> CREATE TABLE TTST ( 
      2      KEY1    VARCHAR2 (20), 
      3      KEY2    VARCHAR2 (20), 
      4      字段2  NUMBER, 
      5      字段3  NUMBER, 
      6      字段4   NUMBER )
      7  /表已创建。
    SQL> insert into ttst values('01','A',0,1,0);已创建 1 行。SQL> insert into ttst values('02','E',1,0,0);已创建 1 行。SQL> insert into ttst values('01','C',0,0,1);已创建 1 行。SQL> insert into ttst values('03','F',0,0,1);已创建 1 行。SQL> insert into ttst values('03','G',0,1,0);已创建 1 行。SQL> insert into ttst values('02','D',0,0,1);已创建 1 行。SQL> insert into ttst values('01','B',1,0,0);已创建 1 行。SQL> commit;提交完成。SQL> select * from (
      2  select ttst.*,rank() over(partition by key1 order by key1 desc,字段2 desc,字段3 desc,字段4 desc) rk
      3  from ttst) tb
      4  where rk=1
      5  /
      

  4.   

    KEY1                                     KEY2                                          字段2      字段3      字段4         RK
    ---------------------------------------- ---------------------------------------- ---------- ---------- ---------- ----------
    01                                       B                                                 1          0          0          1
    02                                       E                                                 1          0          0          1
    03                                       G                                                 0          1          0          1