Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Query para sumar atenciones mensuales (https://www.clubdelphi.com/foros/showthread.php?t=73733)

oscarac 12-05-2011 19:20:21

Query para sumar atenciones mensuales
 
Buenos Dias..

tengo un problema que no se como resolver, resulta que tengo una tabla con los siguientes campos
Cita:


Afiliado, Formulario, FechaAtencion
0001....00001.....15/01/2011
0001....00021.....19/01/2011
0001....00022.....21/01/2011
0001....00035.....17/02/2011
0001....00036.....25/02/2011
0001....00088.....03/03/2011
0001....00099.....04/04/2011
Me gustaria como resultado

Cita:

Afiliado Mes Año Cantidad
0001....1...2011....3
0001....2...2011....2
0001....3...2011....1
0001....4...2011....1

Ahora el mes y el año no necesariamente debe salir de esa forma... solo algo que me indique la cantidad de atenciones agrupado por mes y año

espero haberme explicado bien
gracias

Caral 12-05-2011 19:33:21

Hola
De donde sacas la cantidad?.
Saludos

Caral 12-05-2011 19:35:04

Hola
Ya la vi.
Saludos

maeyanes 12-05-2011 19:37:39

Hola...

Caral es un COUNT de los datos de la tabla, tomando el mes y el año.

Ahora, oscarac, ¿qué motor de base de datos utilizas?



Saludos...

ecfisa 12-05-2011 19:53:34

Hola.

En Firebird podrías hacer:
Código SQL [-]
SELECT AFILIADO, EXTRACT(MONTH FROM FECHA) AS MES, EXTRACT(YEAR FROM FECHA) AS ANIO, COUNT(*) AS CANTIDAD FROM AFILIADOS
GROUP BY AFILIADO, ANIO, MES

Pero como bién pregunta maeyanes hay que ver con que motor trabajas.

Saludos.

Edito: no es necesario: order by afiliado.

Caral 12-05-2011 20:04:32

Hola
Código SQL [-]
SELECT DISTINCT afiliado, Format$(fechaatencion,'mmmm yyyy') AS fecha, Count(*) AS cantidad
FROM Afiliados
GROUP BY afiliado, Format$(fechaatencion,'mmmm yyyy'), Year(fechaatencion)*12+DatePart('m',fechaatencion)-1;
Saludos

oscarac 12-05-2011 20:13:04

ups.... me olvide comentar que es MS SQL SERVER

Caral 12-05-2011 20:27:36

Hola
Y bueno, funciono alguna de las dos opciones?.
Saludos

oscarac 12-05-2011 20:37:46

Pues no, no funciono ninguna de las 2
En la primera me sale
Incorrect syntax near the keyword 'FROM'.

En la segunda
'Format$' is not a recognized function name.



Caral 12-05-2011 20:51:36

Hola
Entonces lo tienes facil.
Cambia o a Firebird o a access :D:D
Saludos

oscarac 12-05-2011 21:05:33

lo solucione de esta manera (con las adiciones en campos correspondientes), a ver si alguien lo puede Optimizar

Código Delphi [-]
 
Select numeroCarnePaciente, Substring(Convert(nvarchar(30), FechaEmision,103),4,10) As Periodo, 
Count(Substring(Convert(nvarchar(30), FechaEmision,103),4,10)) As cantidad
from tb_formulario_web f 
where year(f.FechaEmision) >= 2010 and CodigoEstado = '02' 
and f.CodCLinica in ('9994','9995','9996')
Group by numeroCarnePaciente, Substring(Convert(nvarchar(30), FechaEmision,103),4,10) 
Order by numeroCarnePaciente

abelg 13-05-2011 14:19:09

Hola Oscar mira espero te sirva aún esto en sql server, cree una tabla temporal para poder reproducir la que muestras al inicio.

Código SQL [-]
Create table #consultas (
        afiliado        varchar(15),
        formulario        varchar(15),
        FechaAtencion Datetime
)

insert into #consultas values('0001','00001','2011/01/15')
insert into #consultas values('0001','00021','2011/01/19')
insert into #consultas values('0001','00022','2011/01/21')
insert into #consultas values('0001','00035','2011/02/17')
insert into #consultas values('0001','00036','2011/02/25')
insert into #consultas values('0001','00088','2011/03/03')
insert into #consultas values('0001','00099','2011/04/04')

Select afiliado,
                        DATEPART(month, FechaAtencion) mes,
                        DATEPART(YEAR, FechaAtencion) anio,
                        COUNT(DATEPART(month, FechaAtencion)) cantidad
From #consultas
group by afiliado,
                        DATEPART(month, FechaAtencion),
                        DATEPART(YEAR, FechaAtencion)
--having COUNT(DATEPART(month, FechaAtencion))> 0


Drop table #consultas

si tienes problemas en los insert puede ser por el formato de fecha, en mi configuración esta en ingles, por si tienes problemas pues cambias a tu formato. Ej: 'año/mes/dia' es el mio y el tuyo puede ser 'dia/mes/año'.
saludos.

oscarac 13-05-2011 16:09:22

Gracias Abelg

funciona de forma bastante similar al que yo hice...


La franja horaria es GMT +2. Ahora son las 16:55:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi