Consulta sin cursores

25/08/2005 - 11:25 por Mauricio Quiroz | Informe spam
Hola a todos, esribo por que necesito calcular intervalos de tiempo entre
filas consecutivas para un campo hora_ingreso de tipo datetime.
Al final la consulta debe devolver todos los intervalos superiores a 10 min.

Pude resolver el problema pero solo aplicando cursores y es demasiado lento.
La consulta implica recorrer como minimo 50.000 registros
 

Leer las respuestas

#1 Alejandro Mesa
25/08/2005 - 18:25 | Informe spam
Mauricio Quiroz,

Pudieras postear la estructura y unos datos de ejemplos, asi como el
resultado esperado?. Tratar de entender un problema basandose solamente en su
descripcion es dificil. Ademas, debemos usar nuestro tiempo para crear una
tabla, insertar unas filas y ver si la solucion propuesta se adapta al
resultado deseado. No crees que la ayuda debe ser mutua?

create table t1 (
pk int not null identity primary key,
dt datetime not null
)
go

insert into t1(dt) values(getdate())
insert into t1(dt) values(dateadd(minute, 11, getdate()))
insert into t1(dt) values(dateadd(minute, 22, getdate()))
insert into t1(dt) values(dateadd(minute, 23, getdate()))
insert into t1(dt) values(dateadd(minute, 25, getdate()))
go

select * from t1
go

select
a.pk as a_pk,
b.pk as b_pk,
datediff(minute, a.dt, b.dt) as diff_min
from
t1 as a
inner join
t1 as b
on b.pk = (select min(c.pk) from t1 as c where c.pk > a.pk)
where
datediff(minute, a.dt, b.dt) > 10
go

drop table t1
go


AMB

"Mauricio Quiroz" wrote:

Hola a todos, esribo por que necesito calcular intervalos de tiempo entre
filas consecutivas para un campo hora_ingreso de tipo datetime.
Al final la consulta debe devolver todos los intervalos superiores a 10 min.

Pude resolver el problema pero solo aplicando cursores y es demasiado lento.
La consulta implica recorrer como minimo 50.000 registros



Preguntas similares