with a as( select 1 col1, 2 col2 from dual union all select 1, 3 from dual union all select 1, 4 from dual union all select 2, 1 from dual union all select 2, 2 from dual) select nullif(col1,lag(col1) over(partition by col1 order by rownum)) col1,col2 from a;
换个方式with a as( select 1 col1, 2 col2 from dual union all select 1, 3 from dual union all select 1, 4 from dual union all select 2, 1 from dual union all select 2, 2 from dual) select decode(row_number() over(partition by col1 order by col2),1,col1) col1,col2 from a;
select 1 col1, 2 col2 from dual union all
select 1, 3 from dual union all
select 1, 4 from dual union all
select 2, 1 from dual union all
select 2, 2 from dual)
select nullif(col1,lag(col1) over(partition by col1 order by rownum)) col1,col2
from a;
select 1 col1, 2 col2 from dual union all
select 1, 3 from dual union all
select 1, 4 from dual union all
select 2, 1 from dual union all
select 2, 2 from dual)
select decode(row_number() over(partition by col1 order by col2),1,col1) col1,col2
from a;