我有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;