Hola, buenas tardes, necesito ayuda por favor!!!, tengo un problema con un
Stored que usa cursores para hacer unos calculos que quiero reformular con
operaciones de conjunto.
Se trata de una Tabla te tiene rangos de fechas en los cuales un Docente a
trabajado
Ej:
IdFecha | FechaAlta | FechaBaja | Cargo | Escuela
1 | 10/10/1978 | 13/12/1978 | UEF | 1
2 | 10/11/1978 | 13/12/1978 | UEF | 2
3 | 10/10/1978 | 13/12/1988 | UEF | 3
4 | 10/10/1989 | 13/12/1989 | UEF | 1
5 | 10/10/1990 | 13/12/1991 | UEF | 1
6 | 10/12/1990 | 13/12/1992 | UEF | 3
el Stored usa cursores para tomar los rangos que un docente trabajo en un
cargo concatenando los rangos que estan superpuesto y eliminando los rangos
incluidos el resultado que devuelve el SP es el siguiente:
Rango | FechaAlta | FechaBaja | Cargo
1 | 10/10/1978 | 13/12/1988 | UEF
4 | 10/10/1989 | 13/12/1989 | UEF
5 | 10/10/1990 | 13/12/1992 | UEF
He logrado resolverlo con consultas anidadas sobre la tabla de fechas, pero
mi solucion no me convence ya que demora mas tiempo que el cursor y la logica
para entenderla es complicada.
Explico como lo resolvi para ver si a alguien se le ocurre una mejor manera.
Cree una Consulta que identifica los Incluidos (rangos que estan dentro de
otro)
Otra que identifica a los que InicianDentro (que no estan en Incluidos)
Otra que identifica a los que TerminanDentro.
Otra que Identifica a los que InicianRango (de los concatenados, son los que
Finalizan dentro que no estan en InicianDentro)
Otra que Identifica a los que FinalizanRango (de los concatenados, son los
que Inicializan dentro que no estan en FinalizanDentro)
Otra RangosJuntos que Junta los InicianRango con los Finalizan Rango
Otra consulta que obtiene los Rangos libres
y Una Final que hace la union de Rangos Libres y RangosJuntos.
Cabe aclarar que la tabla de fechas tiene 600.000 registros
Agradezco mucho cualquier aporte a la causa de antemano
Leer las respuestas