MySQL - consulta por mes y año

 
Vista:

consulta por mes y año

Publicado por Jose Onís (2 intervenciones) el 21/06/2016 15:40:32
Hola a todos.

Tengo una tabla llamada ingresos con la siguiente estructura

ID (INT)
ETIQUETA (VARCHAR)
DESCRIIPCION (VARCHAR)
IMPORTE (DECIMAL)
FECHA (DATE)

Lo que deseo es agrupar por mes la suma de los importes en un año dado.

Con esta consulta lo obtengo sin problemas

SELECT MONTH(fecha) Mes,SUM(importe) total FROM ingreso WHERE YEAR(fecha) = '2016' GROUP BY MONTH(fecha)

Pero me encuentro con el siguiente problema. Si deseo mostrar en una tabla todos los meses con sus respectivos importes, solo me mostrará los meses en los que haya datos.

Por ejemplo, supongamos que en enero hay datos, en febrero no y en marzo si, esta consulta solo me muestra los meses Enero y Marzo. ¿Cómo puedo hacer para que me muestre todos los meses aunque no haya datos y que muestre un valor 0 en los meses que no haya datos?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

consulta por mes y año

Publicado por Gonzalo (103 intervenciones) el 22/06/2016 12:47:27
Por supuesto que solo te mostrará los meses donde haya datos. No puede inventar datos que no existen, y si no tienes una tabla con los meses... pues simplemente no puede crearlos.

El SQL y las bases de datos trabajan con datos reales. Se consultan, transforman y procesan DATOS, no valores imaginarios. Dado que en tu relacion de tablas no existe ninguna donde aparezcan los meses que quieres con valor cero, ¿de dónde puede sacarlos MySQ?
De ninguna parte.

Tu problema es muy habitual en los que se inician en el SQL, y la solucion siempre pasa por crear una tabla (fija o temporal) con los doce meses, la cual se usa para generar una salida virtual para los valores faltantes de tiempo.
La otra solución es crear esos registros en la tabla del formulario, por programación.

Usar una u otra forma es una decisión de diseño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta por mes y año

Publicado por Lady Garay Gutierrez (4 intervenciones) el 27/06/2016 11:53:38
No los puede mostrar porque los valores son nulos, mientras tengas registros, te los consultará, pero sino pues no hará caso a eso.
Tal vez podrías modificar eso por programación pero eso ya es aparte de MySQL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar