La verdad que mucho no se entiende de donde sacas la informacion, pero aparentemente lo que necesitas es hacer un pasaje de filas a columnas ¿¿??
Yo hice algo similar con la siguiente consulta, espero te sirva
Código SQL
[-]
select
a1.cod_clasificacion,
c1.nombre_clasif,
SUM(CASE cc.tipo_comp WHEN 1 THEN cd.costo_total ELSE 0 END) AS compras,
SUM(CASE cc.tipo_comp WHEN 2 THEN cd.costo_total ELSE 0 END) AS ventas,
SUM(CASE cc.tipo_comp WHEN 3 THEN cd.costo_total ELSE 0 END) AS transferencias,
SUM(CASE cc.tipo_comp WHEN 5 THEN cd.costo_total ELSE 0 END) AS devoluciones,
SUM(CASE cc.tipo_comp WHEN 6 THEN cd.costo_total ELSE 0 END) AS destruccion
from comp_mov_deposito_cab cc
inner join comp_mov_deposito_det cd on cc.num_comp_armado = cd.num_comp_armado
inner join articulos a1 on cd.cod_articulo=a1.cod_articulo
inner join clasificaciones c1 on a1.cod_clasificacion = c1.cod_clasificacion
group by a1.cod_clasificacion, c1.nombre_clasif;
Si no se entiende la idea puedo simplificarla un poco, pero el secreto esta en el uso del CASE segun el tipo de Comprobante (en mi caso) de movimiento en el tuyo.
Suerte.