MySQL Forums
Forum List  »  Spanish

Select por meses año
Posted by: Carina Barca
Date: October 09, 2013 07:51AM

Hola a todos, necesito hacer una consulta que me devuelva el total de los gastos inclusive de lso meses en los que no haya gastos.
tengo la tabla gasto

CREATE TABLE `gasto` (
`id_gasto` int(11) NOT NULL auto_increment,
`descripcion` varchar(255) NOT NULL,
`id_tipo_gasto` int(11) NOT NULL,
`fecha_pago` date NOT NULL,
`monto` decimal(10,2) NOT NULL,
PRIMARY KEY (`id_gasto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Algunos registros de prueba
INSERT INTO `mtx_gasto` VALUES ('95', 'LIBRERIA ', '19', '2013-01-07', '267.00');
INSERT INTO `mtx_gasto` VALUES ('96', 'LIBRERIA ', '19', '2013-01-08', '198.00');
INSERT INTO `mtx_gasto` VALUES ('97', 'VARIOS', '10', '2013-01-05', '320.00');
INSERT INTO `mtx_gasto` VALUES ('98', 'REMEDIOS', '18', '2013-01-05', '186.25');
INSERT INTO `mtx_gasto` VALUES ('99', 'NAFTA', '22', '2013-01-08', '150.00');
INSERT INTO `mtx_gasto` VALUES ('100', 'LIBRERIA ', '19', '2013-01-08', '22.00');
INSERT INTO `mtx_gasto` VALUES ('101', 'sUPER', '1', '2013-01-10', '146.00');
INSERT INTO `mtx_gasto` VALUES ('103', 'DENTISTA', '14', '2013-01-10', '379.00');
INSERT INTO `mtx_gasto` VALUES ('104', 'MERCADERIA', '1', '2013-01-16', '74.00');
INSERT INTO `mtx_gasto` VALUES ('106', 'SUPER', '1', '2013-01-14', '185.53');
INSERT INTO `mtx_gasto` VALUES ('107', 'luz', '2', '2013-01-15', '421.00');

y la tabla meses

CREATE TABLE `meses` (
`id_mes` int(11) NOT NULL,
`mes` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `meses` VALUES ('1', 'Ene');
INSERT INTO `meses` VALUES ('2', 'Feb');
INSERT INTO `meses` VALUES ('3', 'Mar');
INSERT INTO `meses` VALUES ('4', 'Abr');
INSERT INTO `meses` VALUES ('5', 'May');
INSERT INTO `meses` VALUES ('6', 'Jun');
INSERT INTO `meses` VALUES ('7', 'Jul');
INSERT INTO `meses` VALUES ('8', 'Ago');
INSERT INTO `meses` VALUES ('9', 'Sep');
INSERT INTO `meses` VALUES ('10', 'Oct');
INSERT INTO `meses` VALUES ('11', 'Nov');
INSERT INTO `meses` VALUES ('12', 'Dic');

La consulta es

SELECT
gasto.id_tipo_gasto,
month(gasto.fecha_pago) as mes,
ifnull(sum(gasto.monto),0) as total
FROM
gasto
Right Join meses ON month(gastos.fecha_pago) = meses.id_mes
where
month(gasto.fecha_pago) = meses.id_mes
or month(gasto.fecha_pago) is null
GROUP BY
gasto.id_tipo_gasto,
month(gasto.fecha_pago)

Y el resultado:
2 1 852.00
2 3 510.00
2 4 1059.00
2 7 658.00
2 9 604.00

Me faltan los meses 2, 5, 6 y 8.

Quien me puede ayudar?
Saludos

Options: ReplyQuote


Subject
Views
Written By
Posted
Select por meses año
9276
October 09, 2013 07:51AM
1233
October 10, 2013 10:54AM
1379
October 10, 2013 11:05AM
1170
October 11, 2013 06:28AM
1473
October 11, 2013 09:46AM
824
October 11, 2013 11:41AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.