我在数据有个表:
id name num 
1  a    10
2  b    2
3  c    3
4  a    -13
5  d    11
6  b    1
7  e    10
合并掉相同的name后,num相加,其中第一行和第四行合并,第二行和第六行合并
如何变成下面的格式
id name num 
1  a    -3
2  b    3
3  c    3
4  d    11
5  e    10

解决方案 »

  1.   

    select name,sum(num) as num from 表 group by name
      

  2.   

    呃~~~
    --TRY IT
    SELECT ROWNUM AS ID ,A.* FROM
    (
    select name,sum(num) as num from 表 group by name) A
      

  3.   

    select rownum as id,name,num from(
    select name,sum(num) as num from test group by name) order by name;
      

  4.   

    ID号要变动,但没有说明规则
    只能理解为按name排序重新编号
    所以答案是select rownum as id, name, num
      from (select name, sum(num) as num from test group by name)
     order by name;
      

  5.   

    那就是select rownum as id, name, num
      from (select name,min(id) id, sum(num) as num from test group by name)
     order by id;
      

  6.   

    select  id, name, num
      from (select name,min(id) id, sum(num) as num from a group by name)
     order by id;
      

  7.   

    其实楼主应该自己在PLSQL上好好联系下,其实就是一个group by 函数使用的问题
      

  8.   

    今天没在自己的电脑上,没法登陆数据库,只写出sql.
    select  id,name,num
    from (select name,min(id) id, sum(num) as num from a group by name)
    order by id;
      

  9.   

    但是执行完后id跳号如何解决啊
    我新的表里的id应该时连续的
      

  10.   

    -- TRY FYI ..
    SQL> SELECT DISTINCT DENSE_RANK() OVER(ORDER BY NAME) NEW_ID,
      2         TT.NAME,
      3         SUM(NUM) OVER(PARTITION BY NAME) SUM_NUM
      4    FROM TABLE_NAME TT;    NEW_ID NAME    SUM_NUM
    ---------- ---- ----------
             1 A            -3
             2 B             3
             3 C             3
             4 D            11
             5 E            10