SQL Server - Num de registros por mes

 
Vista:
sin imagen de perfil

Num de registros por mes

Publicado por Alejandro (5 intervenciones) el 05/08/2014 17:51:14
Hola a todos,

Soy principiante en SQL, y quiero preguntarles si alguien sabe como poder extraer la cuenta de los registros por cada mes, pero que cuando en un determinado mes no existan registros me ponga 0, es decir, que me aparezcan todos los meses del año con valor de cero o mas.

Pense inicialmente en agrupar, aqui esta mi consulta:

SELECT count(*) AS total,
MONTH(fecha_nac) AS nummes
FROM empleados
where cb_activo='s' and YEAR(fecha_nac)=1980
GROUP BY MONTH(fecha_nac)
ORDER BY MONTH(fecha_nac) ASC

Pero no cumple con lo que necesito porque hay meses que no tienen registros. Alguna idea ?

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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Num de registros por mes

Publicado por Isaias (4558 intervenciones) el 05/08/2014 19:15:45
Alejandro

Es muy simple, crea una tabla con los MESES y la ligas (JOIN) con tu query, si es NULL, colocas un 0

isnull(tucontador, 0) as total

¿Me explico?
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
sin imagen de perfil

Num de registros por mes

Publicado por Alejandro (5 intervenciones) el 05/08/2014 19:48:31
Excelente, si te entiendo a lo que te refieres. Dejame intento y comento como me fue

Gracias por tu aporte!
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Num de registros por mes

Publicado por Isaias (4558 intervenciones) el 05/08/2014 20:20:44
"Dadme un apoyo y moveré al mundo", Arquimides
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

Num de registros por mes

Publicado por Alejandro (5 intervenciones) el 20/08/2014 16:21:24
Hola Isaias,

Ya cree la tabla de meses para poderla unir a traves de una relacion, pero el campo que contiene la fecha esta en el formato YYYYMMDD y es de tipo Varchar(10). No se como crear un campo calculado para poder extraer los caracteres MM que corresponden al mes, o alguna otra idea de como unir las tablas?
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

Num de registros por mes

Publicado por jams (93 intervenciones) el 18/09/2014 19:21:51
Prueba lo siguiente, trate de hacer el ejercicio completo para lo que requieres


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
declare @empleados table (id int,nombre varchar(100),cb_activo varchar(1),fecha_nac datetime)
declare @tablasal table(total int,nummes int)
declare @tablares table(total int,nummes int)
 
insert into @tablasal values(0,1)
insert into @tablasal values(0,2)
insert into @tablasal values(0,3)
insert into @tablasal values(0,4)
insert into @tablasal values(0,5)
insert into @tablasal values(0,6)
insert into @tablasal values(0,7)
insert into @tablasal values(0,8)
insert into @tablasal values(0,9)
insert into @tablasal values(0,10)
insert into @tablasal values(0,11)
insert into @tablasal values(0,12)
 
 
insert into @empleados values(1,'tony montana','s','1980-01-01')
insert into @empleados values(2,'tony A','s','1980-02-01')
insert into @empleados values(2,'tony B','s','1980-04-01')
 
 
--select * from @tablasal
--select * from @empleados
 
 
insert into @tablares
 
SELECT count(*) AS total,
MONTH(fecha_nac) AS nummes
FROM @empleados
where cb_activo='s' and YEAR(fecha_nac)=1980
GROUP BY MONTH(fecha_nac)
ORDER BY MONTH(fecha_nac) ASC
 
 
update @tablasal set total=b.total
from @tablasal A inner join @tablares B on A.nummes=B.nummes
 
select * from @tablasal


Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Num de registros por mes

Publicado por Alejandro (5 intervenciones) el 18/09/2014 22:33:20
Muchas gracias jams por tu ayuda, dejame lo pruebo y te comento despues
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
sin imagen de perfil

Num de registros por mes

Publicado por Alejandro (5 intervenciones) el 19/09/2014 00:22:15
Wow!! excelente... Es exactamente lo que andaba buscando.


Muchas gracias por querer ayudarme y por tu tiempo !!
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