如何在多列上使用distinct



我有6个字段

f1,f2,f3,f4,f5,f6

只有字段4到6只有变化,我希望结果是基于字段1 的单行

例如

name ,  age,    policy_no,  proposer_code,      entry_date ,        status
-----------------------------------------------------------------------------
aaa     18        100002       101              20-06-2016              A
aaa     18        100002       101              21-06-2016              B  
aaa     18        100002       101              22-06-2016              c   
aaa     18        100002       101              24-06-2016              H
aaa     18        100002       101              26-06-2016              p

我希望最后一行只基于提议者代码,因为那是最近的输入日期。

如果我理解正确,你只想像这样使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by name order by entry_date desc) as seqnum
      from t
     ) t
where seqnum = 1;

在oracle中,您可以使用下面的SQL查询来实现结果集。

select name ,  
       age,    
       policy_no,  
       proposer_code,      
       entry_date ,        
       status
 from (
select name ,  
       age,    
       policy_no,  
       proposer_code,      
       entry_date ,        
       status,
       rank()over(partition by name ,age,policy_no, proposer_code order by entry_date  desc) rnk
from test
group by name ,  age,    policy_no,  proposer_code ,entry_date , status ) a
where a.rnk = 1;

相关内容

  • 没有找到相关文章

最新更新