SELECT 

PA.ID_PERIODO_ANUAL PERIODO_ANUAL,
AM.CODIGO || ' / '|| AM.DESCRIPCION ACTIVIDAD_MEJORA,
OP.CODIGO || '.' || MP.CODIGO || '.' || MP.DESCRIPCION META_POA,
UE.CODIGO UE_COD,
UE.NOMBRE UE_NOMBRE,
ROUND ((AVG(MPE.EJECUCION)/ 
CASE (PAF.ANO - PAI.ANO)
    WHEN 0
    THEN 1
    ELSE (PAF.ANO - PAI.ANO)
  END),2) PROMEDIO,
BAM.JUSTIFICACION,
EAM.NOMBRE ESTADO

FROM PPI.ACTIVIDAD_MEJORA AM
INNER JOIN PPI.META_POA_ACTIVIDAD_MEJORA MPAM ON (AM.ID_ACTIVIDAD_MEJORA = MPAM.ACTIVIDAD_MEJORA)
INNER JOIN BITACORA_AM BAM ON BAM.ACTIVIDAD_MEJORA = MPAM.ACTIVIDAD_MEJORA AND ( BAM.ID_BITACORA_AM = (
    SELECT ID_BITACORA_AM 
    FROM BITACORA_AM BAM1 
    WHERE FECHA = ( 
            SELECT MAX(FECHA) FROM BITACORA_AM BAM2  WHERE (BAM1.ACTIVIDAD_MEJORA = BAM2.ACTIVIDAD_MEJORA) 
        ) AND BAM1.ACTIVIDAD_MEJORA = AM.ID_ACTIVIDAD_MEJORA
    ) )
INNER JOIN PPI.META_POA MP ON (MP.ID_META_POA = MPAM.META_POA)
INNER JOIN PPI.OBJETIVO_POA OP ON (OP.ID_OBJETIVO_POA = MP.OBJETIVO_POA)
INNER JOIN EPF.UNIDAD_EJECUTORA UE ON (UE.ID_UNIDAD_EJECUTORA = AM.UNIDAD_EJECUTORA)
INNER JOIN PPI.META_POA_EVALUACION MPE ON (MP.ID_META_POA = MPE.META_POA)
INNER JOIN PPI.ESTADO_AM EAM ON (AM.ESTADO_AM = EAM.ID_ESTADO_AM)
INNER JOIN PPI.ETAPA_PLAN EP ON (EP.ID_ETAPA_PLAN= MPE.ETAPA_PLAN AND MPE.ETAPA_PLAN = :etapaPlan)
INNER JOIN EPF.PERIODO_ANUAL PA ON (PA.ID_PERIODO_ANUAL = EP.PERIODO_ANUAL)
INNER JOIN PERIODO_ANUAL PAI ON (PAI.ID_PERIODO_ANUAL = AM.PERIODO_ANUAL_INICIAL)
INNER JOIN PERIODO_ANUAL PAF ON (PAF.ID_PERIODO_ANUAL = AM.PERIODO_ANUAL_FINAL)
GROUP BY 
PA.ID_PERIODO_ANUAL,
AM.CODIGO,
AM.DESCRIPCION,
OP.CODIGO,
MP.CODIGO,
MP.DESCRIPCION,
UE.CODIGO,
UE.NOMBRE,
PAF.ANO - PAI.ANO,
BAM.JUSTIFICACION,
EAM.NOMBRE,
BAM.ID_BITACORA_AM,
BAM.FECHA
ORDER BY 
UE.CODIGO,
UE.NOMBRE,
AM.CODIGO,
AM.DESCRIPCION;