3,491
社区成员
发帖
与我相关
我的任务
分享
with sd as (select 'A' as id,'张三' as name,'2012-01-01' as datadate from dual union all
select 'A' as id,'张三' as name,'2012-01-02' as datadate from dual union all
select 'A' as id,'李四' as name,'2012-01-03' as datadate from dual union all
select 'A' as id,'王五' as name,'2012-01-04' as datadate from dual union all
select 'A' as id,'王五' as name,'2012-01-05' as datadate from dual union all
select 'A' as id,'赵六' as name,'2012-01-06' as datadate from dual union all
select 'B' as id,'王五' as name,'2012-01-01' as datadate from dual union all
select 'B' as id,'王五' as name,'2012-01-02' as datadate from dual union all
select 'B' as id,'赵六' as name,'2012-01-03' as datadate from dual union all
select 'C' as id,'李四' as name,'2012-01-01' as datadate from dual union all
select 'C' as id,'王五' as name,'2012-01-02' as datadate from dual union all
select 'C' as id,'王五' as name,'2012-01-03' as datadate from dual)
select t.id, wm_concat(t.name) as names
from (select d.id,
d.name,
/*max(d.datadate) as datadate,*/
row_number() over(partition by d.id order by max(d.datadate) desc) as seq
from sd d
group by d.id, d.name) t where t.seq<3 group by t.id;