select z5 from tablea where rowid in (
select id from (select max(rowid) id,max(z3),max(z4),z1,z2 from tablea group by z1,z2)
)

解决方案 »

  1.   

    有个问题,同时存在两个以上max的话,取出的记录就不是原来的记录了
      

  2.   

    用笨方法作了一个
    SELECT RRT_GRP_ID, GRP.RRT_GRP_NAM, SHN_KBN, SMB_1_TKY_KIS, SMB_2_TKY_KIS, RRT.YRD_1_RRT, RRT.YRD_2_RRT, RRT.YRD_3_RRT, RRT.YRD_4_RRT, RRT.YRD_5_RRT
       FROM DB2ADMIN.RRT_MTR AS RRT, DB2ADMIN.RRT_GRP_MTR AS GRP, 
            (select  SMB2.RRT_GRP_ID,SMB2.SHN_KBN,SMB2.SMB_1_TKY_KIS,SMB2.SMB_2_TKY_KIS
             from   (select RRT.RRT_GRP_ID,RRT.SHN_KBN,max(RRT.SMB_1_TKY_KIS) SMB_1_TKY_KIS
                      from  DB2ADMIN.RRT_MTR RRT
                   group by RRT.RRT_GRP_ID,RRT.SHN_KBN)  SMB1,
                    (select RRT.RRT_GRP_ID,RRT.SHN_KBN,SMB_1_TKY_KIS,max(RRT.SMB_2_TKY_KIS) SMB_2_TKY_KIS
                      from  DB2ADMIN.RRT_MTR RRT
                   group by RRT.RRT_GRP_ID,RRT.SHN_KBN,RRT.SMB_1_TKY_KIS)  SMB2                 
            where   SMB1.RRT_GRP_ID = SMB2.RRT_GRP_ID
             and    SMB1.SHN_KBN = SMB2.SHN_KBN
             and    SMB1.SMB_1_TKY_KIS = SMB2.SMB_1_TKY_KIS) SMB
       WHERE RRT_GRP_ID = '123' AND RRT.RRT_GRP_ID = RRT_GRP_ID AND GRP.RRT_GRP_ID = RRT_GRP_ID AND RRT.SHN_KBN = SHN_KBN AND RRT.SMB_1_TKY_KIS = SMB_1_TKY_KIS AND RRT.SMB_2_TKY_KIS = SMB_2_TKY_KIS
       ORDER BY SMB1.SHN_KBN ASC               
    希望大家能明白
      

  3.   

    select z5 from TABLEA
     where z3 = ( select max( z3 ) from TABLEA)
     or z4 = ( select max( z4 ) from TABLEA)
      

  4.   

    试试,不知能否得出你想要得
    SELECT * from 
    (select z1,z2,z3,z4,z5,dense_rank() over (partition BY z1,z2,z3 order by z4 DESC) rank from TABLEA ) W
    where rank=1
      

  5.   

    select * from (select a.*,row_number() over(partition by z1,z2 order by z3 desc,z4 desc) rm from table_name a) where rm=1