现有一个表t,字段有id,name,value 数据有
1   a   6;
2   b   4;
1   c   0;
我想写个sql 按照value求和,需求是按照id分组,显示出,id ,name ,value,其中name为value值为0 的name
查询结果应该是
1   c   6;
2   b   4
请问这改怎么写?

解决方案 »

  1.   

    我不懂name这列是怎么弄的。。
      

  2.   

    能保证每组都有value=0的吗select id,decode(value,0,name) name,sum(value)  from table group by id;
      

  3.   

    decode(value,0,name) name  可以放在select后面吗?没用过 确认下
      

  4.   

    select id,name,sum(value) from t group by id; 这样应该可以啊,lz试试吧!
      

  5.   


    你这个绝对不可以 一定会报错的  
      保证都是 value=0的话  3楼正解
      

  6.   


    //应该是用oracle的分析函数吧
    //这样好像也行,你试下
    select id,if(value = 0) then name else name,name,count(value) from t where group by id
      

  7.   

    select id,decode(value,0,name) as name,sum(value) from table group by id;
    这个也是不行的,value 不是group by 分组字段。
      

  8.   

    select id,(SELECT name FROM T WHERE VALUE='0' AND ROWNUM='1') AS NAME,sum(value) from T group by id;测试通过,好了, 竞有这么无理有需求,无语。希望对你有用吧。
      

  9.   

    select id,name,sum(value) as value
    from emp
    group by id,name
      

  10.   

    我是3楼...其实我写错了.select t.id,name,value from(
    select id ,sum(value) value  from table group by id) t left join 
    (select id ,name from table where value=0) t1 on t.id=t1.id
      

  11.   

    谢谢各位,自己写出来了,与大家分享下
    select t.id,s.name,sum(t.value) from t left outer join 
    (select t.id,t.name from t where t.value<>0) s on t.id=s.id group by t.id,s.name