结构如下;A B(数值) parent
01 5
02 3 01
03 4 02求03的值=(03的B)*(03的上一级的B)*(03的上上一级的B)就是如是 03有N个上级,就要把它的N个上级的值相乘再乘03的值要求要在SQL中完成....
01 5
02 3 01
03 4 02求03的值=(03的B)*(03的上一级的B)*(03的上上一级的B)就是如是 03有N个上级,就要把它的N个上级的值相乘再乘03的值要求要在SQL中完成....
declare
n_sum number(10);
cursor cc is
select a,b,pa from test
connect by a = prior pa
start with a='03';begin
n_sum:=1;
for v in cc loop
n_sum:=n_sum*v.b;
end loop;
dbms_output.put_line(n_sum);end;
select @value=B, @parent=parent from 表 where A='03'
set @final=@value
while (@parent is NOT NULL AND @parent NOT LIKE '')
begin
select @value=B, @parent=parent from 表 where A=@parent -- 选出parent
@final = @final*@value -- 乘起来
endprint @final --最后的结果
我要的是BOM的用量的计算,一定要用递归才能做到啊...
1、根据所给的列A数据读出当前的列B和parent,将@total=B;
2、循环,停止条件为parent为空,接下来是循环体;
3、循环体内,根据where A=@parent,拿到parent的B,将B累乘到@total中;拿到parent的parent,供下一次循环判断;
4、循环结束后,输出total