Solo una cosa mas ,la sentencia estaba distorcionando los resultados
debido a q los left join VentasDetalle
left join ComprasDetalle , "internamente" estaban selecionando y sumando mas registros de lo q yo esperaba
y tuve q hacer un join para cada tabla
Código:
From Productos
Left Join (select ..Ventas ,VentasDetalle
grop by VentasDetalle.Codarticulos) Vd
on P.CodProducto = vd.codproducto
Left Join (......) Cd
on .........