Consulta de datos por intervalo de tiempo
Publicado por Ricardo Alejandro (2 intervenciones) el 23/03/2021 18:31:10
Hola
Cuento con una problemática: tengo que recuperar registros que en intervalo de tiempo tengan un máximo de minutos de 4, y que sean 3 o mas operaciones, el mismo dia y el mismo centro de operacion. Los registros marcados con la flecha son los que deben de resultar.
Lo que intente fue hacer un join a la misma tabla, en el ON determinado por un DATEADD y que agregara 4 minutos pero me regresa todos los datos de mi tabla:
También pensé en hacer un ciclo while para que recorra los datos pero no tengo idea de como hacerlo, todo esto es para pasarlo a un procedimiento almacenado.
Cuento con una problemática: tengo que recuperar registros que en intervalo de tiempo tengan un máximo de minutos de 4, y que sean 3 o mas operaciones, el mismo dia y el mismo centro de operacion. Los registros marcados con la flecha son los que deben de resultar.
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
Nucliente fhoperacion centro horaoperacion NU_MOVIMIENTO MONTO
--------- ----------- ------ ---------------- -------------------- --------------------
23394459 2020-03-18 6512 09:21:13.0000000 4831671 3980.00
23388753 2020-03-18 6512 09:21:41.0000000 4831696 4000.00
8215508 2020-03-18 6512 09:50:58.0000000 4833707 4000.00
23395729 2020-03-18 6512 09:59:13.0000000 4834287 4000.00
23394971 2020-03-18 6512 10:10:42.0000000 4835184 3800.00
23392108 2020-03-18 6512 10:35:38.0000000 4837279 4000.00
23396036 2020-03-18 6512 11:03:25.0000000 4839575 4000.00
23389732 2020-03-18 6512 11:12:43.0000000 4840415 4000.00
23392340 2020-03-18 6512 11:19:00.0000000 4841026 4000.00
23392739 2020-03-18 6512 11:51:04.0000000 4844012 4000.00
23392073 2020-03-18 6512 11:57:58.0000000 4844648 4000.00
23397239 2020-03-18 6512 12:05:19.0000000 4845305 4000.00
18474788 2020-03-18 6512 12:14:18.0000000 4846105 4000.00
23387478 2020-03-18 6512 12:26:23.0000000 4847305 4000.00
23389129 2020-03-18 6512 12:31:52.0000000 4847824 4000.00
23395747 2020-03-18 6512 12:35:17.0000000 4848117 4000.00
23389770 2020-03-18 6512 12:42:00.0000000 4848751 4000.00 <--------
23397045 2020-03-18 6512 12:45:13.0000000 4849053 4000.00 <--------
23395751 2020-03-18 6512 12:47:40.0000000 4849284 3900.00 <--------
23389430 2020-03-18 6512 12:49:17.0000000 4849448 4000.00 <--------
20330399 2020-03-18 6512 12:55:48.0000000 4850052 4000.00
12796485 2020-03-18 6512 13:02:42.0000000 4850625 4000.00
23397067 2020-03-18 6512 13:17:11.0000000 4851866 4000.00
23389442 2020-03-18 6512 13:23:51.0000000 4852439 4000.00
19773684 2020-03-18 6512 13:32:13.0000000 4853199 4000.00
Lo que intente fue hacer un join a la misma tabla, en el ON determinado por un DATEADD y que agregara 4 minutos pero me regresa todos los datos de mi tabla:
1
2
3
4
5
select
a.Nucliente,a.fhoperacion,a.centro,a.horaoperacion,a.NU_MOVIMIENTO,a.MONTO
from @RESTEMP a
left join @RESTEMP b on a.fhoperacion = b.fhoperacion and a.centro =b.centro and a.horaoperacion between b.horaoperacion and DATEADD(minute,4,CAST(b.horaoperacion AS TIME))
order by a.centro, a.fhoperacion, a.horaoperacion
También pensé en hacer un ciclo while para que recorra los datos pero no tengo idea de como hacerlo, todo esto es para pasarlo a un procedimiento almacenado.
Valora esta pregunta


0