Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/05/2015, 10:52
Avatar de Doglas
Doglas
 
Fecha de Ingreso: mayo-2015
Mensajes: 22
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Reporte de descansos medicos

La tabla(resumida) es esta:
Código SQL:
Ver original
  1. ASISTENCIA_OCURRENCIA
  2. ( c_c_empresa                  CHAR(2) NOT NULL,
  3.   c_c_codigo                   CHAR(15) NOT NULL,
  4.   c_n_secuencia                VARCHAR2(6) NOT NULL,
  5.   c_c_ocurrencia               VARCHAR2(2),
  6.   d_inicio                     DATE,
  7.   d_fin                        DATE,
  8.   c_h_inicio                   VARCHAR2(4),
  9.   c_h_fin                      VARCHAR2(4),
  10.   c_st_dia_hora                CHAR(1),
  11.   c_st_situacion               CHAR(1),
  12.   n_n_dias_ocurrencia          NUMBER(4),
  13.   n_n_dias_procesados          NUMBER(4),
  14.    d_modifica                   DATE)

Para el reporte actual se usan los campos d_inicio, d_fin y n_n_dias_ocurrencia. Lo que hace el query es verificar si campo d_inicio esta dentro del rango de fecha que se ingresa ejemplo(del 01/12/2013 al 31/12/2013) y si esta muestra el campo n_n_dias_ocurrencia. El problema es que si el descanso es desde el 27/12/2013 al 10/01/2014 la totalidad de dias(15) lo muestra en el rango de diciembre y si consulto enero muestra cero(0). El query(resumido) es el siguiente:
Código SQL:
Ver original
  1. SELECT   "ASISTENCIA_OCURRENCIA"."C_C_EMPRESA",
  2.                "ASISTENCIA_OCURRENCIA"."C_C_CODIGO",  
  3.                UF_DESC_TRABAJADOR_CODIGO("ASISTENCIA_OCURRENCIA"."C_C_EMPRESA",
  4.                "ASISTENCIA_OCURRENCIA"."D_INICIO",  
  5.                "ASISTENCIA_OCURRENCIA"."D_FIN",  
  6.                "ASISTENCIA_OCURRENCIA"."N_N_DIAS_PROCESADOS",  
  7.                "ASISTENCIA_OCURRENCIA"."C_FL_VISACION",  
  8. FROM "ASISTENCIA_OCURRENCIA","ASISTENCIA_MOTIVO_OCURRENCIA","SMF_CLINICA"
  9. WHERE ("ASISTENCIA_OCURRENCIA"."C_C_OCURRENCIA" = "ASISTENCIA_MOTIVO_OCURRENCIA"."C_C_OCURRENCIA")
  10. AND ("ASISTENCIA_OCURRENCIA"."C_C_CENTRO_MEDICO" = "SMF_CLINICA"."C_C_CLINICA")
  11. AND     ( ( "ASISTENCIA_OCURRENCIA"."C_C_EMPRESA" = :as_c_empresa)
  12.           AND ( "ASISTENCIA_OCURRENCIA"."C_C_AUXILIAR"= 'T')
  13.           AND ( "ASISTENCIA_OCURRENCIA"."C_C_CODIGO" BETWEEN :as_cod_ini AND
  14.                   :as_cod_fin )
  15.           AND ("ASISTENCIA_OCURRENCIA"."D_INICIO" BETWEEN to_date(:as_fecha_ini,'dd/mm/yyyy')
  16.            AND  to_date(:as_fecha_fin, 'dd/mm/yyyy'))
  17.            AND ( "ASISTENCIA_OCURRENCIA"."C_C_TIPO_OCURRENCIA" = '02')
  18.          AND ( "ASISTENCIA_OCURRENCIA"."C_ST_SITUACION" <> '2'))
Ahora tengo que modificar o rehacer el query para que el reporte muestra 5 dias en diciembre(si consulto para diciembre) y 10 dias(si consulto para enero). Revisando los datos veo que hay renovacion de descansos medicos, por ejemplo: un descanso que empieza el 10/12/2013 hasta el 13/12/2013 pero sigue mal y le renuevan del 14/12/2013 al 23/12/2013 y asi hasta el 24/02/2014. Gracias por su ayuda. Espero que se vea bien este post.
PD: Porque esta en un subforo de Programación para mayores de 30?

Última edición por gnzsoloyo; 06/05/2015 a las 11:17