Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Listar todos los meses del año

Estas en el tema de Listar todos los meses del año en el foro de PostgreSQL en Foros del Web. Saludos, tengo una consulta que realiza la comparación entre 2 años, X e Y , en los cuales recupero los totales por mes; pero sucede ...
  #1 (permalink)  
Antiguo 30/09/2010, 09:19
Avatar de djmashe  
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Listar todos los meses del año

Saludos, tengo una consulta que realiza la comparación entre 2 años, X e Y, en los cuales recupero los totales por mes; pero sucede que hay meses en que no tengo valores y quisiera mostrar los mismos con valores 0 (si estan viendo 2 usuarios que me salvan siempre ya deben estar riendose ).

La consulta actualmente es la siguiente:
Código SQL:
Ver original
  1. SELECT REPLACE(REPLACE(REPLACE(
  2.        REPLACE(REPLACE(REPLACE(    
  3.        REPLACE(REPLACE(REPLACE(    
  4.        REPLACE(REPLACE(REPLACE(DATE_PART('MONTH', fechae), '12','Diciembre'),  '11','Noviembre'), '10','Octubre'),
  5.                                                            '9' ,'Septiembre'), '8' ,'Agosto'),    '7' ,'Julio'),
  6.                                                            '6' ,'Junio'),      '5' ,'Mayo'),      '4' ,'Abril'),                                                 
  7.                                                            '3' ,'Marzo'),      '2' ,'Febrero'),   '1' ,'Enero') AS mes,
  8.       DATE_PART('YEAR', fechae) AS anio, COUNT(id_licencia) AS cantidad
  9. FROM te02_licencias
  10. WHERE DATE_PART('YEAR', fechae) IN ('2005', '2010')
  11. GROUP BY DATE_PART('YEAR', fechae), DATE_PART('MONTH', fechae)
  12. ORDER BY anio, DATE_PART('MONTH', fechae);

la cual devuelve:

Código:
mes                        anio             cantidad 
----------------------------------------------------
Marzo                      2005                    2 
Mayo                       2005                    1 
Julio                      2005                    1 
Octubre                    2005                    1 
Noviembre                  2005                    1 
Diciembre                  2005                    2 
Enero                      2010                 7429 
Febrero                    2010                 7954 
Marzo                      2010                 8500 
Abril                      2010                 8057 
Mayo                       2010                 8100 
Junio                      2010                 8445 
Julio                      2010                 9074 
Agosto                     2010                 9196 
Septiembre                 2010                 2184

cuando en realidad necesito esto:

Código:
mes                        anio             cantidad 
----------------------------------------------------
Enero                      2005                    0
Febrero                    2005                    0
Marzo                      2005                    2 
Abril                      2005                    0 
Mayo                       2005                    1
Junio                      2005                    0 
Julio                      2005                    1 
Agosto                     2005                    0
Septiembre                 2005                    0 
Octubre                    2005                    1 
Noviembre                  2005                    1 
Diciembre                  2005                    2 
Enero                      2010                 7429 
Febrero                    2010                 7954 
Marzo                      2010                 8500 
Abril                      2010                 8057 
Mayo                       2010                 8100 
Junio                      2010                 8445 
Julio                      2010                 9074 
Agosto                     2010                 9196 
Septiembre                 2010                 2184 
Octubre                    2010                    0 
Noviembre                  2010                    0 
Diciembre                  2010                    0 
gracias desde ya a los que puedan ayudarme...
  #2 (permalink)  
Antiguo 05/10/2010, 08:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Listar todos los meses del año

djmashe

Hacer esto con una consulta, creo que ya se te vuelve inmensamente complejo. Te recomiendo empezar a programar un poco con plpgsql que es el lenguaje procedural de postgresql.

Lo que se me ocurre es que mires la función generate_series de postgresql para organizar tu consulta tal como la quieras.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: año, listar, meses
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.