Buen día Nicolás. Este ejemplo será valido para MySQL creo que la función format_date no es SQL Ansi y con certeza se que en Oracle toca con to_char(fecha,'mm'), pero todos los motores de base de datos tienen la manera de obtener el mes a partir de un campo fecha.
select mes, sum(total) total
from (
select date_format(fecha, '%m') mes, sum(valor) total from ingresos
group by date_format(fecha, '%m')
union
select date_format(fecha, '%m') mes, sum(valor) total from pagos
group by date_format(fecha, '%m')
union
select date_format(fecha, '%m') mes, - sum(valor) total from gastos
Comments
Buen día Nicolás. Este ejemplo será valido para MySQL creo que la función format_date no es SQL Ansi y con certeza se que en Oracle toca con to_char(fecha,'mm'), pero todos los motores de base de datos tienen la manera de obtener el mes a partir de un campo fecha.
select mes, sum(total) total
from (
select date_format(fecha, '%m') mes, sum(valor) total from ingresos
group by date_format(fecha, '%m')
union
select date_format(fecha, '%m') mes, sum(valor) total from pagos
group by date_format(fecha, '%m')
union
select date_format(fecha, '%m') mes, - sum(valor) total from gastos
group by date_format(fecha, '%m')) st
group by mes;