पोडिलुस्का का सुझाव अच्छा है। यदि आपके पास Oracle 11g R2 है, तो सामान्य टेबल एक्सप्रेशन जाने का रास्ता है। नए सिंटैक्स की पुनरावर्ती प्रकृति आपको sys_connect_by_path
को छोड़ने की अनुमति देगी instr
. के साथ संयुक्त , जो आपके प्रदर्शन को गंभीर रूप से चोट पहुँचाने वाला है।
इसे आजमाएं:
select
child,
sum(total_quantity) total_quantity
from (
with h (parent, child, isleaf, quantity, total_quantity) as (
select
parent,
child,
isleaf,
quantity,
quantity total_quantity
from
itemhier
where
parent = 'ASSY001'
union all
select
ih.parent,
ih.child,
ih.isleaf,
ih.quantity,
ih.quantity * h.total_quantity total_quantity
from
itemhier ih
join
h on h.child = ih.parent
)
select * from h
where isleaf = 1
)
group by child;
यहाँ sqlfiddle है:http://sqlfiddle.com/#!4/9840f/6ए>