La tabla(resumida) es esta:
Código SQL:
Ver originalASISTENCIA_OCURRENCIA
( c_c_empresa CHAR(2) NOT NULL,
c_c_codigo CHAR(15) NOT NULL,
c_n_secuencia VARCHAR2(6) NOT NULL,
c_c_ocurrencia VARCHAR2(2),
d_inicio DATE,
d_fin DATE,
c_h_inicio VARCHAR2(4),
c_h_fin VARCHAR2(4),
c_st_dia_hora CHAR(1),
c_st_situacion CHAR(1),
n_n_dias_ocurrencia NUMBER(4),
n_n_dias_procesados NUMBER(4),
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 originalSELECT "ASISTENCIA_OCURRENCIA"."C_C_EMPRESA",
"ASISTENCIA_OCURRENCIA"."C_C_CODIGO",
UF_DESC_TRABAJADOR_CODIGO("ASISTENCIA_OCURRENCIA"."C_C_EMPRESA",
"ASISTENCIA_OCURRENCIA"."D_INICIO",
"ASISTENCIA_OCURRENCIA"."D_FIN",
"ASISTENCIA_OCURRENCIA"."N_N_DIAS_PROCESADOS",
"ASISTENCIA_OCURRENCIA"."C_FL_VISACION",
FROM "ASISTENCIA_OCURRENCIA","ASISTENCIA_MOTIVO_OCURRENCIA","SMF_CLINICA"
WHERE ("ASISTENCIA_OCURRENCIA"."C_C_OCURRENCIA" = "ASISTENCIA_MOTIVO_OCURRENCIA"."C_C_OCURRENCIA")
AND ("ASISTENCIA_OCURRENCIA"."C_C_CENTRO_MEDICO" = "SMF_CLINICA"."C_C_CLINICA")
AND ( ( "ASISTENCIA_OCURRENCIA"."C_C_EMPRESA" = :as_c_empresa)
AND ( "ASISTENCIA_OCURRENCIA"."C_C_AUXILIAR"= 'T')
AND ( "ASISTENCIA_OCURRENCIA"."C_C_CODIGO" BETWEEN :as_cod_ini AND
:as_cod_fin )
AND ("ASISTENCIA_OCURRENCIA"."D_INICIO" BETWEEN to_date(:as_fecha_ini,'dd/mm/yyyy')
AND to_date(:as_fecha_fin, 'dd/mm/yyyy'))
AND ( "ASISTENCIA_OCURRENCIA"."C_C_TIPO_OCURRENCIA" = '02')
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?