有一张表 
aa  bb  cc  
1    a     1
2    b     0
3    a     1
4    c     1
希望结果集是
1  a   2
2  b   0
3  c   1bb字段去掉重复的值 并且把cc字段的值相加请问如何实现必须用 子查询 group by 吗?

解决方案 »

  1.   

    可以用group by
      

  2.   

    大概就是这个意思SELECT aa,bb,sum(cc) FROM t_name t WHERE t.aa = (SELECT t1.aa FROM t_name GROUP BY t1.bb)但是group by  不能这样使用。如何解决?
      

  3.   

    select distinct t1.aa,t1.bb,t1.cc+t2.cc from tb t1,tb t2 where t1.bb=t2.bb
     union
    select distinct t1.aa,t1.bb,t1.cc from tb t1,tb t2 where t1.bb(+)=t2.bb and t2.bb=NULLtb是你的表名
      

  4.   

    SQL> with a as(
      2  select 1 c1,'a' c2,1 c3 from dual
      3  union
      4  select 2,'b',0 from dual
      5  union
      6  select 3,'a',1 from dual
      7  union
      8  select 4,'c',1 from dual)
      9  select rownum rn,b.c2,s_c3 from (select  a.c2,sum(a.c3) s_c3 from a group by a.c2) b;        RN C       S_C3
    ---------- - ----------
             1 a          2
             2 b          0
             3 c          1
      

  5.   

    有要求需要显示出来     看了一下思路  是通过group by到一张临时表  在从零时表里面取出来
      

  6.   

    需说明
    1  a   2
    2  b   0
    3  c   1
    这个结果中的1/2/3 是怎么来的,自然序号还是有其他规则。
      

  7.   

    小白前来学习 感觉只要按照bb列group by就可以了啊 cc列是对对应bb列的求和吧  aa列其实是自然顺序排列吧select t.rownum,t.*
    from(
    select bb,sum(cc)
    from t_name 
    group by bb) t ; 
      

  8.   


    t.rownum的t.不需要4
    5
    select rownum,t.*
    from(
    select bb,sum(cc)
    from t_name 
    group by bb) t ; 如果需求没有理解错的话 应该是这样
      

  9.   

    select  aa,bb,cc  from 表名 order by  bb;
      

  10.   

    select rownum,t.*
    from(
    select bb,sum(cc)
    from t_name 
    group by bb) t ; 
      

  11.   

    select rownum,t.*
    from(
    select bb,sum(cc)
    from t_name 
    group by bb) t ; 这样验证了,这样行
      

  12.   

    这样应该可以吧WITH T AS(
    SELECT '1' AA ,'a' BB ,'1' CC FROM DUAL
    UNION ALL
    SELECT '2' AA ,'b' BB ,'0' CC FROM DUAL
    UNION ALL
    SELECT '3' AA ,'a' BB ,'1' CC FROM DUAL
    UNION ALL
    SELECT '4' AA ,'c' BB ,'1' CC FROM DUAL
    )SELECT * FROM (SELECT AA, BB,SUM(CC) OVER(PARTITION BY BB ) CC FROM T) TT
    WHERE TT.AA = (SELECT MIN(AA) FROM T WHERE TT.BB = T.BB)