Dado que un padre puede tener una fila secundaria en algunas de esas tablas, debe usar LEFT OUTER JOIN.
LEFT OUTER JOIN une dos tablas devolviendo todas las filas de la tabla LEFT, en este caso A y todas las coincidencias de las otras tablas. Cuando no haya coincidencia devolverá NULL en las columnas correspondientes de las tablas que no hubo coincidencia.
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.Id = B.ParentID
LEFT OUTER JOIN C
ON A.Id = C.ParentID
LEFT OUTER JOIN P
ON C.Id = P.ParentID
LEFT OUTER JOIN Q
ON C.Id = Q.ParentID
LEFT OUTER JOIN D
ON A.Id = D.ParentID
LEFT OUTER JOIN E
ON A.Id = E.ParentID
LEFT OUTER JOIN F
ON A.Id = F.ParentID
LEFT OUTER JOIN X
ON F.Id = X.ParentID
LEFT OUTER JOIN Y
ON F.Id = Y.ParentID
LEFT OUTER JOIN G
ON A.Id = G.ParentID
EDITAR
He agregado una forma de agregar subhijos. Los he intentado más solo para hacerlos obvios en una representación visual. Pero cuidado... si esto lleva a que los subhijos tengan otros subhijos, etc., tal vez su estructura no sea la óptima.