Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/10/2010, 18:17
NA1TM3R
 
Fecha de Ingreso: agosto-2008
Mensajes: 82
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Ayuda Expertos!

Saludos...

Antes que nada, muchas gracias por contestar Quim...

En base a condicionar las posibilidades he conseguido lo siguiente...

Lógica:
(El resultado de la query serán los días a descontar de la quincena a pagar...)

INC_DIA = DIAS DE INCAPACIDAD...
INC_INI = FECHA DE COMIENZO DE INCAPACIDAD
INC_TER = FECHA DE TÉRMINO DE INCAPACIDAD
QUI_INI = FECHA DE INICIO DE QUINCENA
QUI_TER = FECHA DE TÉRMINO DE QUINCENA

Si INC_DIA >= 14 :
15
Si (INC_INI entre QUI_INI y QUI_TER) y INC_TER >= QUI_TER:
QUI_TER - INC_INI
Si INC_INI <= QUI_INI y (INC_TER entre QUI_INI y QUI_TER):
(INC_TER - INC_INI) + (QUI_INI - INC_INI)...

Ahora la Query:

QUI_INI = Inicio de quincena.
QUI_END = Cierre de quincena.

Código MySQL:
Ver original
  1.   CASE WHEN DATEDIFF(DIS_TO, DIS_FROM) >= 14 THEN
  2.     15
  3.   ELSE
  4.     CASE WHEN ((DIS_FROM BETWEEN QUI_INI AND QUI_END) AND DIS_TO >= QUI_END ) THEN
  5.       DATEDIFF(QUI_END, DIS_FROM)
  6.     WHEN (DIS_FROM <= QUI_INI AND (DIS_TO BETWEEN QUI_INI AND QUI_END)) THEN
  7.       DATEDIFF(DIS_TO, DIS_FROM) + DATEDIFF(QUI_INI,DIS_FROM)
  8.     END
  9.   END
  10. )RESTAR_DIAS
  11. FROM EMPLOYEE_DISABILITIES
  12. WHERE ID_EMPLOYEE = 666;


Ya lo he probado con un par de ejemplos y me funcionó... pero siempre nos sorprenden las posibilidades que pueden volver obsoleto nuestro cálculo...

Cualquier sugerencia para implementar/corregir será bien recibida...

Muchas gracias y Nos seguimos leyendo...