RT假如有表A
id number
------------------
T1 20010302
T1 20100404
T1 20081230
T2 20040512
T2 20071103
........
想把这个A表的数据写进到B表,其中ID字段不变,后面那个日期字段以ID为准,按照日期(number类型的日期)的大小顺序转成1,2,3等,换了一个ID又是新的1,2,3
如下:
表B
id num
---------------
T1 1
T1 3
T1 2
T2 1
T2 2
请问怎么转才可以高效的把A转进B呢,我试过之后用游标更新和写函数在select语句里,但是速度都非常慢,求高效方法,谢谢啦
id number
------------------
T1 20010302
T1 20100404
T1 20081230
T2 20040512
T2 20071103
........
想把这个A表的数据写进到B表,其中ID字段不变,后面那个日期字段以ID为准,按照日期(number类型的日期)的大小顺序转成1,2,3等,换了一个ID又是新的1,2,3
如下:
表B
id num
---------------
T1 1
T1 3
T1 2
T2 1
T2 2
请问怎么转才可以高效的把A转进B呢,我试过之后用游标更新和写函数在select语句里,但是速度都非常慢,求高效方法,谢谢啦
select id,row_number() over(partition by id order by number)
from a
哟 第一次见这个东西 row_number() 是什么咧?
create table t(
t_id varchar2(4),
t_number number(12));
insert into t
select 'T1',20010302 from dual union all
select 'T1',20100404 from dual union all
select 'T1',20081230 from dual union all
select 'T2',20040512 from dual union all
select 'T2',20071103 from dual
--
insert into b(t_id,t_number)
select t_id,row_number() over(partition by t_id order by t_number)
from t;
--
SQL> select * from b;T_ID T_NUMBER
---- -------------
T1 1
T1 2
T1 3
T2 1
T2 2