Una opción es hacerlo con subselects:
Código SQL
[-]
-- Recorro CABECERA
-- * Traigo datos de CABECERA
-- * De cada registro obtengo SUMas del detalle asociado (detalles con mismo nro. de factura) para un CODIGO de artículo determinado.
select
c.n_factura,
(select sum(cantidad) from detalle where n_factura=c.n_factura and codigo = 1) as wm,
(select sum(cantidad) from detalle where n_factura=c.n_factura and codigo = 2) as wp,
(select sum(cantidad) from detalle where n_factura=c.n_factura and codigo = 3) as ap,
c.total
from cabecera c
order by by c.n_factura