试试
select 编码,sum(数量) from 表名 having 编码 in (select 编码 from 表名 where 编码 like 编码) group by 编码;

解决方案 »

  1.   

    喂,楼上的老兄:下次麻烦你测试过了再拿来发,免得误导别人。
    首先你先想想,编码 like 编码,起不到任何作用,在本题中是为真的。
    那么子查询会把所有编码列出来,那么最后你的语句相当于
    select 编码,sum(数量) from 表名 group by 编码;
    这对吗??
    本来你热心回答问题,我不应该冷嘲热讽,但是我实在看不下去有人不负责任。
    如果言语唐突,请见谅!!
    在此呼吁ORACLE版倡导良好的回答问题的态度,最起码先测试过再发。如果没有
    测试环境,请注明“未经测试!”。
      

  2.   

    我在实际项目曾碰到过此类问题,不过那个项目的情况是:
    --明确知道只有三层!
    如果对你的数据也成立的话,我给出一个比较复杂的sql,不算完美。
    select substr(id,1,2) id,sum(nvl(sl,0)) sl from tt 
    group by substr(id,1,2) 
    union 
    select substr(id,1,4) id,sum(nvl(sl,0)) sl from tt 
    where length(id) > 2 group by substr(id,1,4) 
    union 
    select substr(id,1,6) id,sum(nvl(sl,0)) sl from tt 
    where length(id) >4 group by substr(id,1,6);
      

  3.   

    你的方案很好:)
    我这里写了一个sql,大家来看看有什么问题
    select code ,(select count(1) from table where where code like t.code||'%') from 
    table t
      

  4.   

    select a.编码 ,(select sum(nvl(b.数量,0)) 
                    from tab b where a.编码 = Substr(b.编码, 1, length(a.编码)) 
    from table a
      

  5.   

    guangli_zhang(广丽)
    首先非常感谢你回答我的问题:),你这种写法只是汇总一层。我写那种已经解决了。可以汇总n层节点数