我在实际项目曾碰到过此类问题,不过那个项目的情况是:
--明确知道只有三层!
如果对你的数据也成立的话,我给出一个比较复杂的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);
喂,楼上的老兄:下次麻烦你测试过了再拿来发,免得误导别人。
首先你先想想,编码 like 编码,起不到任何作用,在本题中是为真的。
那么子查询会把所有编码列出来,那么最后你的语句相当于
select 编码,sum(数量) from 表名 group by 编码;
这对吗??
本来你热心回答问题,我不应该冷嘲热讽,但是我实在看不下去有人不负责任。
如果言语唐突,请见谅!!
在此呼吁ORACLE版倡导良好的回答问题的态度,最起码先测试过再发。如果没有
测试环境,请注明“未经测试!”。