SQL - Crear total de horas de citas

 
Vista:
sin imagen de perfil

Crear total de horas de citas

Publicado por miguelanviro (4 intervenciones) el 05/06/2009 10:17:52
Hola buenos días, he formulado esta pregunta en el foro de Access y creo que no saben como responder. Desearía que alguien me respondiera ya que es muy importante para mí solucionar esta pregunta.

Tengo 3 tabals, (Citas, Expedientes y Tutor)
En la tabla Citas, tengo NumExpediente, Fecha, HoraInicio, HoraFin.
En la de Expedientes, tengo NumExpediente, CodTutor.
En la de tutor, tengo CodTutor y Nombre

He creado una consulta con CodTutor, NumExpediente, Fecha, HoraInicio, HoraFin y una Expresion que me da la Duración de la Cita. Llamándo a la consulta Duración.

Desearía me explicaran como crear una consulta para saber la suma de la duración de las primeras Citas.

Crear una consulta para conocer la suma del resto de Citas sin estar la primera Cita.

Total de Citas, (Suma de todas las Citas).

Así como un informe dónde aparezca el total de horas de cada Usuario.

¿Podrían ayudarme a hacerlo?.

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:Crear total de horas de citas

Publicado por cmgcharli (8 intervenciones) el 06/06/2009 12:24:31
Si no lo he entendio mal yo lo primero que haria es eliminar la tabla Expedientes y agregar a la tabla citas el campo CodTutor dado que esta tabla intermedia que como vuelvo a repetir si no lo entendido mal sirve para determinar que tutor atencio la cita (expedientes) y se engorra más la cosa y los datos de expdientes los tendriamos en citas.

EJEMPLO EN EL QUE SE OBTIENE EL CODTUTOR EL NUMERO DE CITAS HORAS Y MINUTOS ACUMULADOS EN LAS CITAS DEL DIA(HOY)
HE CREADO UNA TABLA CON LOS CAMPOS CODTUTOR, FECHA, INICIO, FIN LUEGO HE HECHO LA CONSULTA SIGUIENTE EN LENGUAGE SQL

"SELECT [CODTUTOR], COUNT([CODTUTOR]) AS TOTALCITAS, IIf((SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60<60,(SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60,((((SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60)-(SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60 MOD 60)/60)) AS HORAS, ((SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60 MOD 60) AS MINUTOS, IIf((SUM((VAL(MID([FIN],4))*60)+(VAL(MID([FIN],1,2))*3600))-SUM((VAL(MID([INICIO],4))*60)+(VAL(MID([INICIO],1,2))*3600)))/60<60,'00:' & MINUTOS,HORAS & ':' & MINUTOS) AS TIEMPO
FROM TABLA1
WHERE FECHA=DATEVALUE('06/06/2009')
GROUP BY [CODTUTOR]"

El resultado son cuatro campos CODTUTOR que contiene el codigo del tutor , TOTALCITAS, que contiene el numero de citas del día(hoy) de cada tutor, campo HORAS que presenta el número de horas acumuladas de todas las citas y campo MINUTOS que presenta el numero de minutos acumulados de todas las citas respecto del mismo tutor y por ultimo lo presenta en un campo llamado TIEMPO con formato hh:mm el tiempo total acumulado

Espero que te sirva de orientación para lo que deseas.
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

RE:Crear total de horas de citas

Publicado por miguelanviro (4 intervenciones) el 08/06/2009 09:55:35
Hola buenos días, muchas gracias por tu información, pero me sale el siguiente error:

Instrucción SQL no válida, se esperaba "DELETE", "INSERT", "PROCEDURE", "SELECT" o "UPDATE".

No sé si me he explicado mal, mi idea es saber el número de primeras citas (en horas) que ha tenido el Tutor en un mes, dos meses, etc. Así como el total de horas que ha tenido cada Expediente (el Expediente es un usuario),

No sé si me he explicado mejor, si ´quieres te envío la Base de datos para que la ojees y trabajes con ella. Mi Email es:

[email protected]

Muchas 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

RE:Crear total de horas de citas

Publicado por cmgcharli (8 intervenciones) el 08/06/2009 15:36:04
Enviala [email protected]
Si no entiendo yo mal primeras citas del tutor es la iniciación de los expedientes y quieres en horas el tiempo dedicado a ello de todos los expedientes del mes . o de x meses realizados por ese tutor.
Luego quieres el tiempo invertido en cada expediente desde su iniciación hasta su finalizacion o hasta la fecha de consulta y sin contar el tiempo de iniciación reliazado por el tutor correspondiente ??????
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:Crear total de horas de citas

Publicado por cmgcharli (8 intervenciones) el 07/06/2009 12:03:22
Hay dos tablas TABLA1 Y TABLA2.
TABLA1 contiene los siguientes campos NUMEXPE, FECHA, FIN, INICIO
TABLA2 contiene los siguientes campos CODTUTOR, NUMEXPE

PUNTO-1º

La siguiente consulta obtiene la primera cita de cada uno de los tutores de todos los dias que tenga citas, nos presenta el codigo de tutor, la Fecha en que realizo la cita, la hora de inicio de la cita y la duración de la misma.

SELECT [CODTUTOR], MAX([FECHA]) AS FechaCita, MIN([INICIO]) AS HoraInicio, FORMAT(MIN([INICIO])-MIN([FIN]),'hh:mm') AS Duracion
FROM TABLA1 INNER JOIN TABLA2 ON [TABLA1].[NUMEXPE]=[TABLA2].[NUMEXPE]
GROUP BY [FECHA], [CODTUTOR];

Si se quiere obtener la primera cita del día (hoy) se debe de poner la clausula WHERE y a continuación el criterio de seleccion.

SELECT [CODTUTOR], MAX([FECHA]) AS FechaCita, MIN([INICIO]) AS HoraInicio, FORMAT(MIN([INICIO])-MIN([FIN]),'hh:mm') AS Duracion
FROM TABLA1 INNER JOIN TABLA2 ON [TABLA1].[NUMEXPE]=[TABLA2].[NUMEXPE] WHERE FECHA=DATE()
GROUP BY [FECHA], [CODTUTOR]
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:Crear total de horas de citas

Publicado por cmgcharli (8 intervenciones) el 09/06/2009 09:29:39
1º Decirte que la base de datos no me ha llegado mi servidor (Terra) la bloqueo
2º Me he construido una base de datos con las tablas y los campos que tu indicabas y te comento:
-Los campos CodTutor y NumExpedientes estan definidos en todas las tablas como campo númerico largo
-El campo Fecha esta definido fecha/hora con formato de Fecha Corta dd/mm/aaaa
-Los campos HoraInicio y HoraFin estan definidos como fecha/hora con formato Fecha General es decir dd/mm/aaaa hh:mm:ss ojo es esencial que estos campos esten en este formato para que contenga no solo la hora de inicio y la hora fin sino la fecha a la que corresponden.
- El campo Nombre tipo texto

Esta consulta obtiene la suma de tiempo ( hh:mm) de todas las primeras citas (considerado como primera cita la primera vez que un expediente figura en la tabla Citas con una fecha, una hora de incio y una hora fin) correspondiente a cada tutor en un intervalo de tiempo dado. Este intervalo de tiempo esta definido por los datos que deberas ingresar al ejecutar la consulta (presenta un cuadro donde deberas insertar la fecha correspondiente con formato fecha dd/mm/aaaa) como FECHA1 (inicio del intervalo) y FECHA2 (final del intervalo) los datos obtenidos en este intervalo incluye ambos extremos (FECHA1 y FECHA2)

SELECT FORMAT(SUM(DATO.DURACION),'hh:mm') AS HORAS, Nombre
FROM [SELECT IIF(MIN(Fecha)>=CDATE(FECHA1), IIF(MIN(Fecha)<=CDATE(FECHA2), MIN(Fecha), NULL), NULL) AS FECHAINICIO, (MIN(HoraFin)-MIN(HoraInicio)) AS DURACION, Citas.NumExpedientes,CodTutor
FROM Citas INNER JOIN Expedientes ON Citas.NumExpedientes=Expedientes.NumExpedientes
GROUP BY CodTutor, Citas.NumExpedientes]. AS DATO INNER JOIN Tutor ON DATO.CodTutor=Tutor.CodTutor
WHERE NOT ISNULL(DATO.FECHAINICIO)
GROUP BY Nombre ORDER BY Nombre

El resultado son dos campo Horas y Nombre.
Horas contiene la suma del tiempo (hh:mm) de todas las primeras citas de Nombre correspondiente al periodo indicado en el intervalo de tiempo marcado por FECHA1 y FECHA2

Espero que sea lo que querias en el primer punto en cualquier caso indicalo aqui para seguir con los otros puntos o cuestiones que planteabas.
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

RE:Crear total de horas de citas

Publicado por miguelanviro (4 intervenciones) el 10/06/2009 13:11:12
Hola buenos días, he intentado crear la base de datos como me has dicho, he introducido las fechas de intervalo, pero me sale también otros cuadros para meter los NumExpedientes de Citas y NumExpedientes de Expedientes y no me sale las horas que ha realizado cada tutor.
Así como cuando quiero ampliar las fechas en las citas, no me deja aumentar dichas citas.
Te he enviado por Email el archivo que yo he estado haciendo completo en formato rar. por si lo recibes de esta forma.

Muchas gracias por tus molestias.
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