select d.top_item, d.top_item_id, d.bom_level, d.item, d.parent,d.item_id,d.quantity, BUILTIN.DF(i.location) as location, il.leadTime, il.atpLeadTime
from
(
select BUILTIN.DF(m.parentItem) as top_item,m.parentitem as top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '1' as bom_level
from itemMember m
where m.parentitem = 63542
and (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)
UNION ALL
select b.top_item, b.top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '2' as bom_level
from itemMember m
INNER JOIN (select BUILTIN.DF(m.parentItem) as top_item, m.parentItem as top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '1' as bom_level
from itemMember m
where m.parentitem = 63542
and (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)) b on m.parentItem = b.item_id
where (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)
UNION ALL
select c.top_item, c.top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '3' as bom_level
from itemMember m
INNER JOIN (select b.top_item, b.top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '2' as bom_level
from itemMember m
INNER JOIN (select BUILTIN.DF(m.parentItem) as top_item, m.parentItem as top_item_id, BUILTIN.DF(m.parentItem) as parent,BUILTIN.DF(m.item) as item, m.item as item_id, m.quantity, '1' as bom_level
from itemMember m
where m.parentitem = 63542
and (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)) b on m.parentItem = b.item_id
where (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)) c on m.parentItem = c.item_id
where (CURRENT_DATE < m.obsoleteDate OR m.obsoleteDate is null)
) d
INNER JOIN item i on d.item_id = i.id
INNER JOIN aggregateItemLocation il on il.item = i.id AND il.location = i.location