Gracis a todos los que habeis leido el tema, ya he conseguido solucionarlo utilizando
Código SQL:
Ver originalSUM(IF(ventas.tarjeta='1',cobrado,0)) AS tarjeta,
SUM(IF(ventas.tarjeta='0',cobrado,0)) AS metalico,
SUM(ventas.cobrado) AS suma
Igualmente, si alguien conoce un metodo mejor o alguna forma de simplificarlo bien venido sea.
Así es como a quedado
Código SQL:
Ver originalSELECT
ventas.tarjeta,
ventas.concepto,
ventas.actividad,
ventas.id_actividad,
SUM(IF(ventas.tarjeta='1',cobrado,0)) AS tarjeta,
SUM(IF(ventas.tarjeta='0',cobrado,0)) AS metalico,
SUM(ventas.cobrado) AS suma
FROM
control_clases,ventas
WHERE
control_clases.ano=2016 AND control_clases.mes=1 AND ventas.id=control_clases.id_ventas
GROUP BY
id_actividad
UNION ALL
SELECT
tarjeta,
INSERT(concepto,1,50,'Suma BP'),
actividad,
INSERT(id_actividad,1,5,' '),
SUM(IF(ventas.tarjeta='1',cobrado,0)) AS tarjeta,
SUM(IF(ventas.tarjeta='0',cobrado,0)) AS metalico,
SUM(ventas.cobrado) AS suma
FROM
ventas
WHERE
YEAR(fecha_cobro)=2016 AND MONTH(fecha_cobro)=1 AND actividad='BP'
GROUP BY
id_actividad
UNION ALL
SELECT
tarjeta,
INSERT(concepto,1,50,'Suma BG'),
actividad,
INSERT(id_actividad,1,5,' '),
SUM(IF(ventas.tarjeta='1',cobrado,0)) AS tarjeta,
SUM(IF(ventas.tarjeta='0',cobrado,0)) AS metalico,
SUM(ventas.cobrado) AS suma
FROM
ventas
WHERE
YEAR(fecha_cobro)=2016 AND MONTH(fecha_cobro)=1 AND actividad='BG'
GROUP BY
id_actividad
ORDER BY actividad,concepto,suma