Access - Tiempo (minutos) entre activaciones

 
Vista:

Tiempo (minutos) entre activaciones

Publicado por Jorge Eduardo (2 intervenciones) el 27/07/2003 02:04:46
Hola Tengo la siguiente tabla (log) que registra la hora en que es activado un equipo (numero de equipo y hora de activacion):

NumEquipo HoraOcurrencia
12 9.00
11 10.00
12 10.01
13 10.10
13 11.00
12 11.15

Necesito actualizar esta tabla con un campo duracion entre activaciones:

NumEquipo HoraOcurrencia DuracionEntreActivaciones(minutos)
12 9.00 0
11 10.00 0
12 10.01 61
13 10.10 0
13 11.00 50
12 11.15 74

Si alguien me puede orientar o si existe una instruccion sql que realice esta actualizacion lo agradezco mucho.
Saludos a todos
Jorge
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 Alejandro

Tiempo (minutos) entre activaciones

Publicado por Alejandro (4142 intervenciones) el 02/05/2023 20:03:02
Hola Jorge.

Para obtener la duración entre activaciones de cada equipo, puedes utilizar la función DATEDIFF de SQL. Aquí te muestro un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
UPDATE log AS l1
SET l1.DuracionEntreActivaciones =
    (SELECT MIN(DATEDIFF('n', l2.HoraOcurrencia, l1.HoraOcurrencia))
     FROM log AS l2
     WHERE l2.NumEquipo = l1.NumEquipo
       AND l2.HoraOcurrencia < l1.HoraOcurrencia)
WHERE EXISTS
    (SELECT 1
     FROM log AS l3
     WHERE l3.NumEquipo = l1.NumEquipo
       AND l3.HoraOcurrencia < l1.HoraOcurrencia);

Explicación del código:

1. Primero se utiliza un subconsulta para obtener la duración entre la activación actual y la activación anterior del mismo equipo. Esto se logra buscando la activación anterior con la cláusula WHERE en la subconsulta y utilizando la función DATEDIFF para calcular la duración en minutos.

2. La subconsulta se utiliza en la cláusula SET del comando UPDATE para actualizar el campo DuracionEntreActivaciones de la activación actual.

3. La cláusula WHERE se utiliza para asegurarse de que solo se actualicen las filas que tienen una activación anterior. Esto se logra con la cláusula EXISTS, que busca una fila anterior para cada activación.

Espero que esto te ayude. ¡Buena suerte!
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