Te sugiero no usar subconsulta sino mas bien hacer enfasis en el query que te despliegue el arbol, para esto la clave es la recursividad, puedes usar una funcion de tabla que te devuelva los subcomponentes usando recursividad, o tambien puedes usar un inner join con la misma tabla, algo asi:
With BOM (Root,Parent,Child,Level,Quantity) As
(
Select P.Code ,convert(nvarchar(20),'') ,P.Code ,0 Level, convert(varchar(20),' ')
From OITT P
Union All
Select B.Root,c.Father,C.Code,Level+1,convert(varchar(20),C.Quantity)
From Itt1 C
Inner join BOM B on c.Father=B.Child
)
Select B.*
From BOM B
Order By B.Root,B.Level
Option (MAXRECURSION 99)
en este link explica esta ultima solucion: h_tps://www.experts-exchange.com/questions/28390445/T-SQL-Recursive-CTE-for-Bill-of-Materials.html