SQL - MESES SQL

 
Vista:

MESES SQL

Publicado por Nekei (2 intervenciones) el 23/10/2008 10:52:08
Hola,

Necesito ayuda en una consulta de SQL. La consulta es la siguiente

SELECT MONTH(FECHA) AS Mes, YEAR(FECHA) AS Año, SUM(TOTAL) AS Total, NOMBRE, CODIGO
FROM FACTURAS INNER JOIN CLIENTES ON CLIENTE = CODIGO
GROUP BY YEAR(FECHA), MONTH(FECHA), NOMBRE, CODIGO
HAVING (YEAR(FECHA) = 2008)
ORDER BY Año, mes

Y el resultado que obtengo es parecido al siguiente:
mes año total cliente codigo
1 2008 5818,386 XXXXXXXXXXX 2445
1 2008 7498,5741 XXXXXXXXXX 3382
4 2008 364,4256 XXXXXXXXXXXX. 4207
6 2008 10851,452 XXXXXXXXXXXXXXX 2740
7 2008 320,044 XXXXXXXXXXXXXXXXXXXXX 4430
7 2008 905,902 XXXXXXXXXXXX 4473
8 2008 772,56 XXXXXXXXXXXXXXX 84
9 2008 1439,56 X X XXXXXXX 3382

Y lo que quisiera conseguir es lo mismo pero que me muestre todos los meses, es decir:
mes año total cliente codigo
1
2
3
4
5
6
7
8
9
10
11
12

Y los campos pues nulos cuando no tengan nada (el caso de los meses 2, 3, 5, 10, 11, 12)

Muchas gracias!!
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

RE:MESES SQL

Publicado por pacopaz (143 intervenciones) el 23/10/2008 22:59:04
Prueba con esto:

select t.M,
s.Año,
s.Total,
s.Nombre,
s.Codigo from
(select 1 as M
union select 2
union select 3
union select 4
union select 5
union select 6
union select 7
union select 8
union select 9
union select 10
union select 11
union select 12) as t left join
(SELECT MONTH(FECHA) AS Mes, YEAR(FECHA) AS Año, SUM(TOTAL) AS Total, NOMBRE, CODIGO
FROM FACTURAS INNER JOIN CLIENTES ON CLIENTE = CODIGO
GROUP BY YEAR(FECHA), MONTH(FECHA), NOMBRE, CODIGO
HAVING (YEAR(FECHA) = 2008)) as s
on t.M = s.Mes
order by
s.Año, t.M

Espero que te sirva.

Saludos.
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

RE:MESES SQL

Publicado por Isaias (5072 intervenciones) el 24/10/2008 05:17:01
Excelente, solo que yo haria una tabla de meses y evitar que el motor cada que se ejecute el query tenga que hacer los UNION.

De ahi en fuera, deberia funcionar.
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

RE:MESES SQL

Publicado por Nekei (2 intervenciones) el 27/10/2008 10:01:48
Ok, muchas gracias.
Sólo tube que puntualizar a que tabla hacía referencia el campo código (ya que aparecía en las dos) y funcionó a la perfección.

Saludos y gracias!
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