ORACLE 向上递归 然后合计用量的有关问题 100分
ORACLE 向上递归 然后合计用量的问题 100分
BOM表 TAB1
已知C_CODE T1,T2,T3,K2,想要获取道最顶层A_CODE的用量C_QU的总和是多少
A_ID A_CODE C_ID C_CODE C_QU
-------------------------------------------------------------------
1 A1 10 K1 1
10 K1 100 T1 4
1 A1 20 K2 2
1 A1 30 K3 2
30 K3 101 T2 1
2 A2 102 T3 10
想要获取到下面的输出结果
A_CODE C_CODE SUM(C_QU)
--------------------------------------------------------------------
A1 T2 2
A1 K2 2
A1 T1 4
A2 T3 10
其实就是向上递归,并合计某一字段的问题,请大神帮助!
------解决思路----------------------
------解决思路----------------------
dbms_aw.eval_number,好东西啊
印象中有这么函数,就是想不起来是啥了,百度了下也没找到,只好自己去写了个,呵呵
BOM表 TAB1
已知C_CODE T1,T2,T3,K2,想要获取道最顶层A_CODE的用量C_QU的总和是多少
A_ID A_CODE C_ID C_CODE C_QU
-------------------------------------------------------------------
1 A1 10 K1 1
10 K1 100 T1 4
1 A1 20 K2 2
1 A1 30 K3 2
30 K3 101 T2 1
2 A2 102 T3 10
想要获取到下面的输出结果
A_CODE C_CODE SUM(C_QU)
--------------------------------------------------------------------
A1 T2 2
A1 K2 2
A1 T1 4
A2 T3 10
其实就是向上递归,并合计某一字段的问题,请大神帮助!
------解决思路----------------------
select connect_by_root a_code,
c_code,
dbms_aw.eval_number(substr(sys_connect_by_path(c_qu, '*'), 2))
from tab1 t
where connect_by_isleaf = 1
start with not exists (select 1 from tab1 tx where tx.c_id = t.a_id)
connect by prior c_id = a_id
------解决思路----------------------
dbms_aw.eval_number,好东西啊
印象中有这么函数,就是想不起来是啥了,百度了下也没找到,只好自己去写了个,呵呵