SQL - Quiebres de Fechas de Uso de Vacaciones

   
Vista:

Quiebres de Fechas de Uso de Vacaciones

Publicado por Juan (2 intervenciones) el 24/11/2013 04:06:15
Buenas Noches,

Como haría para separar las fechas por meses. Por ejemplo yo tengo una tabla donde me muestra lo siguiente:

Codigo Nombre justificación fec_ini fec_fin

1 juan vacaciones 15/03/2013 13/04/2013

Lo que yo quiero es que se separe ese rango por sus respectivos meses por ejemplo:

Codigo Nombre justificación fec_ini fec_fin

1 juan vacaciones 15/03/2013 31/03/2013
1 juan vacaciones 01/04/2013 13/04/2013

Como pueden ver esa fecha se ha separado en dos registros, por meses.

Se debe tener en cuenta que en la tabla ya existe registros que ya han sido separados por meses pero faltan muchos mas por hacer son como 18000 registros.

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

Quiebres de Fechas de Uso de Vacaciones

Publicado por leonardo_josue (879 intervenciones) el 25/11/2013 22:37:38
Hola Juan... en primer lugar, no nos dices con qué BD estás trabajando, por lo tanto es imposible darte una respuesta puntual al problema que tienes. Aunque la mayoría de los DBMS's utilizan SQL como lenguaje de consultas, existen diferencias muy significativas entre cada uno de ellos, sobre todo en el caso específico del manejo de funciones de fecha.

En segundo lugar, tengo algunas dudas sobre la información... por ejemplo,

1. ¿el periodo de fechas estará comprendido siempre entre meses consecutivos?
2. ¿el periodo de fechas estará comprendido sólo entre dos meses, o puede abarcar más de 2 meses (por ejemplo, una licencia sin goce de sueldo por 6 meses, o una incapacidad médica por 2 meses)?
3. ¿El periodo de fechas implicar un cambio de año? es decir que comiencen en un año en específico y terminen en uno distinto al original.
4. ¿Has pensado en la posibilidad de hacer un SP en lugar de tratar de hacer una consulta simple?

A partir de esta información dependerá la complejidad de la consulta.

Si quieres obtener esto en una consulta, te advierto que no será nada sencilla, pues implican toda una serie de validaciones a considerar...

En pseudocódigo sería el siguiente:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECCIONAR
   Codigo, Nombre, justificación, fec_ini, fec_fin
DE tu_tabla
DONDE el mes y el año de la fecha inicial y final sean el mismo
(Esto quiere decir que no hay 'Quiebres')
UNION
SELECCIONAR
Codigo, Nombre, justificación, fec_ini, ULTIMO DÍA DEL MES (fecha_ini)
DE tu_tabla
DONDE el mes y el año de la fecha inicial y final no sean el mismo
UNION
SELECCIONAR
Codigo, Nombre, justificación, PRIMER DÍA DEL MES (fecha_fin), fechaFin
DE tu_tabla
DONDE el mes y el año de la fecha inicial y final no sean el mismo

Este algoritmo sólo es válido si la distancia entre las dos fechas no abarca más de un mes y se trata de meses consecutivos... Como te comenté, dependiendo de lo que respondas a las preguntas que te hice y del motor de BD que manejes esta consulta se puede complicar mucho más.

Haz el intento, y si continuas con problemas postea algo de lo que intentaste hacer y con gusto tratamos de ayudarte.

Saludos
Leo.
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

Quiebres de Fechas de Uso de Vacaciones

Publicado por Juan Carlos (2 intervenciones) el 02/12/2013 05:06:23
Hola que tal Gracias por tu respuesta, estoy utilizando sql server 2012 y a continuación contesto a tus preguntas:

1. ¿el periodo de fechas estará comprendido siempre entre meses consecutivos?

- claro que si los quiebres proceden precisamente por meses consecutivos y en este caso solo es de un concepto "vacaciones".

2. ¿el periodo de fechas estará comprendido sólo entre dos meses, o puede abarcar más de 2 meses (por ejemplo, una licencia sin goce de sueldo por 6 meses, o una incapacidad médica por 2 meses)?

-Excelente pregunta, si con respecto a las vacaciones existe el concepto de vacaciones por 25 años y al trabajador se le da 90 días de vacaciones, y estas pueden usarse como el trabajador mas le parezca, osea tomar los 90 días implica que 3 meses están en un solo registro.

3. ¿El periodo de fechas implicar un cambio de año? es decir que comiencen en un año en específico y terminen en uno distinto al original.

- Si así es pueden empezar en diciembre y terminar en enero.

4. ¿Has pensado en la posibilidad de hacer un SP en lugar de tratar de hacer una consulta simple?

- Soy super novato, mi nivel es solo consultas y algunos procedimiento de insert, update, delete.

Pero ahora deseo desquebrarlos. Es decir que ya los tengo quebrados por meses, pero me han pedido juntarlos como deben de ser. Ayudame please. 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