本帖最后由 liuchang8877 于 2011-08-18 15:46:06 编辑

解决方案 »

  1.   


    select id,name,to_char(sum(to_number(flag))) as flag
    from test_cc
    group by id,name
      

  2.   


    不行哦 缺少 INTO 语句,而且 我是要更新这个表
      

  3.   

    select a.id, a.name, to_char(sum(to_number(a.flag)))
      from TEST_CC a
     group by a.id, a.name
      

  4.   

    缺少 INTO 语句   你又没说要清楚select后要存起来具体什么需求?看你的描述不就是一个查询结果
      

  5.   

    LZ 建议建张临时表,或者用 procedure 自定义的table类型的数据
      

  6.   

    这个更新原表肯定有问题的,你处理后的结果是分组了,记录肯定比原表少了,没办法一一对应update原表多出的记录删除?还是id与name相同的多条记录更新成一样的,就重复了?
      

  7.   

    还是id与name相同的多条记录更新成一样的。 再删除重复的 ,怎么样?  这个怎么写 ,我刚才insert一张新的临时表中,出错了。 报错 不是 groupby 表达式
      

  8.   

    insert into test_CC2(ID , NAME ,FLAG) 
    (select id,name,to_char(sum(to_number(flag))) as flag
    from test_cc
    group by id,name
    ); 
    结果 报错 不是 group by 表达式
      

  9.   


    --update
    merge into test_cc a
    using 
    (
      select id,name,to_char(sum(to_number(flag))) as flag
      from test_cc
      group by id,name
    ) b
    on (a.id=b.id and a.name=b.name)
    when matched then
      update set a.flag = b.flag;--delete
    delete from test_cc a where a.rowid > (select min(b.rowid) from test_cc b where a.id=b.id and a.name=b.name and a.flag=b.flag)
      

  10.   

    缺少关键字 when matched 后面,merge 不太熟悉
      

  11.   

    无语
    insert into test_cc2(id,name,flag)(
       select id,name,to_char(sum(to_number(flag))) as flag
      from test_cc
      group by id,name 
    );
    原来这样就可以。
      

  12.   

    你这样重新插到一张临时表里,然后再用这临时表里的数据更新TEST_CC表??如果是这样的话 那我还是建议你直接用楼上的merge