tab1-->tab2:insert into tab2(name,type,num)
select name,type,sum(nvl(num,0)) from tab1 group by name,type;update tab2 set id=rownum;tab2-->tab1
35 -->20 10 5
18 -->9 6 3
不知道什么拆分规则

解决方案 »

  1.   

    sql>rename tab1 to temp1;
    sql>rename tab2  to tab1;
    sql>rename temp1 to tab2;
      

  2.   

    tab1:
    __________________________________________
    id name num type date
    1  a    5    s   2004-4-4
    2  a    10   s   2004-4-5
    3  a    20   s   2004-4-5
    4  b    3    d   2004-4-6
    5  b    6    d   2004-4-7
    6  b    9    d   2004-4-8
    ..............
    ___________________________________________
    tab2:
    id name num type date
    1  a    35    s  2004-4-8
    2  b    18    d  2004-4-9
    ...............
    _____________________________________________
      

  3.   

    insert into tab2 select * from tab1 where not exists(select 1 from tab2 where tab1.id=tab2.id)
      

  4.   

    ID not nULL:insert into tab2(name,type,num)
    select rownum,name,type,s1 from 
    (select name,type,sum(nvl(num,0)) s1 from tab1 group by name,type);
      

  5.   

    insert into tab2(id,name,type,num)
    select rownum,name,type,s1 from 
    (select name,type,sum(nvl(num,0)) s1 from tab1 group by name,type);
      

  6.   

    insert into tab2(name,type,num)
    select name,type,sum(nvl(num,0)) from tab1 where id is not null group by name,type
      

  7.   

    S1是(select name,type,sum(nvl(num,0)))的别名。
    S1代表了这个记录集。在同一语句中引用S1就相当于引用这个SELECT语句。同理,select id myid,name from tab1
    myid 是id的别名。
    只要中间有一个空格就可以了。
      

  8.   

    S1是(select name,type,sum(nvl(num,0)) s1 from tab1 group by name,type)中sum(nvl(num,0)) 的别名。
    S1代表了sum(nvl(num,0)) 。在同一语句中引用S1就相当于引用这个sum(nvl(num,0)) 。同理,select id myid,name from tab1
    myid 是id的别名。
    只要中间有一个空格就可以了。