SIGESA: Calculo Avance Acumulado Acción / Aporte

  • Completo
--****************************************************************************
-- CONSULTA: OBTENER LAS DISTRIBUCIONES
--****************************************************************************
SELECT 
DISTINCT 
    ACE.ID_ACCION_ESTRATEGICA                                           AS ID_ACCION_ESTRATEGICA,
    APE.ID_APORTE_ESTRATEGICO                                           AS ID_APORTE_ESTRATEGICO,
    CAN_APO.CANTIDAD_APORTES                                            AS CANTIDAD_APORTES,
    (1 / CAN_APO.CANTIDAD_APORTES)                                      AS REPRESENTATIVIDAD,
    APD.DISTRIBUCION_PORCENTUAL                                         AS DISTRIBUCION, 
    ((1 / CAN_APO.CANTIDAD_APORTES)*APD.DISTRIBUCION_PORCENTUAL)        AS PROGRAMACION,
    NVL(EJECUCION.PROMEDIO,0)                                           AS PROMEDIO_EVALUACION, 
    ((((1 / CAN_APO.CANTIDAD_APORTES)*APD.DISTRIBUCION_PORCENTUAL) * NVL(EJECUCION.PROMEDIO,0)) / 100) AS EJECUCION,
    
    PA.ID_PERIODO_ANUAL                                                 AS PERIODO_ANUAL, 
    PA.ANO                                                              AS ANIO, 
    NVL(EJECUCION.ETAPA_PLAN,0)                                         AS ETAPA_PLAN, 
    NVL(EJECUCION.FECHA_FINAL_EVALUACION,'01/01/2001')                  AS FECHA_FINAL_EVALUACION
   
FROM PERIODO_ANUAL PA
INNER JOIN APORTE_PAE_DISTRIBUCION      APD  ON (APD.PERIODO_ANUAL = PA.ID_PERIODO_ANUAL)
INNER JOIN APORTE_ESTRATEGICO           APE  ON (APE.ID_APORTE_ESTRATEGICO = APD.APORTE_ESTRATEGICO)
INNER JOIN ACCION_ESTRATEGICA           ACE  ON (ACE.ID_ACCION_ESTRATEGICA = APE.ACCION_ESTRATEGICA)
INNER JOIN (SELECT ACCION_ESTRATEGICA, COUNT(*) AS CANTIDAD_APORTES FROM PPI.APORTE_ESTRATEGICO GROUP BY ACCION_ESTRATEGICA) CAN_APO ON CAN_APO.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA

LEFT JOIN(

    --****************************************************************************
    -- CONSULTA: OBTENER LAS EVALUACIONES
    --****************************************************************************
    SELECT 
        DISTINCT 
        APD.APORTE_ESTRATEGICO, 
        AVG(MPE.EJECUCION) PROMEDIO,
        MPE.ETAPA_PLAN, 
        PA.ANO, 
        MAX(EP.FECHA_FINAL_EVALUACION) AS FECHA_FINAL_EVALUACION
    FROM PERIODO_ANUAL                  PA
    INNER JOIN APORTE_PAE_DISTRIBUCION  APD ON (APD.PERIODO_ANUAL       = PA.ID_PERIODO_ANUAL)
    INNER JOIN META_POA_APORTE          MPA ON (MPA.APORTE_ESTRATEGICO  = APD.APORTE_ESTRATEGICO)
    INNER JOIN META_POA_EVALUACION      MPE ON (MPE.META_POA            = MPA.META_POA)
    INNER JOIN META_POA                 MP  ON (MP.ID_META_POA          = MPE.META_POA)
    INNER JOIN OBJETIVO_POA             OP  ON (OP.ID_OBJETIVO_POA      = MP.OBJETIVO_POA)
    INNER JOIN PLAN_OPERATIVO           PO  ON (PO.ID_PLAN_OPERATIVO    = OP.PLAN_OPERATIVO AND  PO.PERIODO_ANUAL = PA.ID_PERIODO_ANUAL)
    INNER JOIN EVALUACION_OPERATIVA     EO  ON (EO.PLAN_OPERATIVO       = PO.ID_PLAN_OPERATIVO AND EO.ETAPA_PLAN = MPE.ETAPA_PLAN)
    INNER JOIN ETAPA_PLAN               EP  ON (EP.ID_ETAPA_PLAN        = EO.ETAPA_PLAN)
    WHERE 
    PA.ID_PERIODO_ANUAL IN (SELECT DISTINCT PERIODO_ANUAL FROM APORTE_PAE_DISTRIBUCION)
    AND APD.APORTE_ESTRATEGICO = :id_aporte_estrategico
    GROUP BY PA.ANO, APD.APORTE_ESTRATEGICO, MPE.ETAPA_PLAN, EP.FECHA_FINAL_EVALUACION
    ORDER BY APD.APORTE_ESTRATEGICO, PA.ANO ASC
    
   ) EJECUCION ON (EJECUCION.ANO = PA.ANO AND EJECUCION.APORTE_ESTRATEGICO= APD.APORTE_ESTRATEGICO)

WHERE 
PA.ID_PERIODO_ANUAL IN (SELECT DISTINCT PERIODO_ANUAL FROM APORTE_PAE_DISTRIBUCION)
AND APE.ID_APORTE_ESTRATEGICO = :id_aporte_estrategico
AND ACE.ID_ACCION_ESTRATEGICA = :id_accion_estrategica;
  • Sumatoria
--****************************************************************************
-- CONSULTA: OBTENER LAS DISTRIBUCIONES
--****************************************************************************
SELECT 
DISTINCT 
    SUM((((1 / CAN_APO.CANTIDAD_APORTES) * APD.DISTRIBUCION_PORCENTUAL) * NVL(EJECUCION.PROMEDIO, 0)) / 100) AS AVANCE_ACUMULADO
FROM PERIODO_ANUAL PA
INNER JOIN APORTE_PAE_DISTRIBUCION      APD  ON (APD.PERIODO_ANUAL = PA.ID_PERIODO_ANUAL)
INNER JOIN APORTE_ESTRATEGICO           APE  ON (APE.ID_APORTE_ESTRATEGICO = APD.APORTE_ESTRATEGICO)
INNER JOIN ACCION_ESTRATEGICA           ACE  ON (ACE.ID_ACCION_ESTRATEGICA = APE.ACCION_ESTRATEGICA)
INNER JOIN (SELECT ACCION_ESTRATEGICA, COUNT(*) AS CANTIDAD_APORTES FROM PPI.APORTE_ESTRATEGICO GROUP BY ACCION_ESTRATEGICA) CAN_APO ON CAN_APO.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA

LEFT JOIN(

    --****************************************************************************
    -- CONSULTA: OBTENER LAS EVALUACIONES
    --****************************************************************************
    SELECT 
        DISTINCT 
        APD.APORTE_ESTRATEGICO, 
        AVG(MPE.EJECUCION) PROMEDIO,
        MPE.ETAPA_PLAN, 
        PA.ANO, 
        MAX(EP.FECHA_FINAL_EVALUACION) AS FECHA_FINAL_EVALUACION
    FROM PERIODO_ANUAL                  PA
    INNER JOIN APORTE_PAE_DISTRIBUCION  APD ON (APD.PERIODO_ANUAL       = PA.ID_PERIODO_ANUAL)
    INNER JOIN META_POA_APORTE          MPA ON (MPA.APORTE_ESTRATEGICO  = APD.APORTE_ESTRATEGICO)
    INNER JOIN META_POA_EVALUACION      MPE ON (MPE.META_POA            = MPA.META_POA)
    INNER JOIN META_POA                 MP  ON (MP.ID_META_POA          = MPE.META_POA)
    INNER JOIN OBJETIVO_POA             OP  ON (OP.ID_OBJETIVO_POA      = MP.OBJETIVO_POA)
    INNER JOIN PLAN_OPERATIVO           PO  ON (PO.ID_PLAN_OPERATIVO    = OP.PLAN_OPERATIVO AND  PO.PERIODO_ANUAL = PA.ID_PERIODO_ANUAL)
    INNER JOIN EVALUACION_OPERATIVA     EO  ON (EO.PLAN_OPERATIVO       = PO.ID_PLAN_OPERATIVO AND EO.ETAPA_PLAN = MPE.ETAPA_PLAN)
    INNER JOIN ETAPA_PLAN               EP  ON (EP.ID_ETAPA_PLAN        = EO.ETAPA_PLAN)
    WHERE 
    PA.ID_PERIODO_ANUAL IN (SELECT DISTINCT PERIODO_ANUAL FROM APORTE_PAE_DISTRIBUCION)
    AND APD.APORTE_ESTRATEGICO = :id_aporte_estrategico
    GROUP BY PA.ANO, APD.APORTE_ESTRATEGICO, MPE.ETAPA_PLAN, EP.FECHA_FINAL_EVALUACION
    ORDER BY APD.APORTE_ESTRATEGICO, PA.ANO ASC
    
   ) EJECUCION ON (EJECUCION.ANO = PA.ANO AND EJECUCION.APORTE_ESTRATEGICO= APD.APORTE_ESTRATEGICO)

WHERE 
PA.ID_PERIODO_ANUAL IN (SELECT DISTINCT PERIODO_ANUAL FROM APORTE_PAE_DISTRIBUCION)
AND APE.ID_APORTE_ESTRATEGICO = :id_aporte_estrategico
AND ACE.ID_ACCION_ESTRATEGICA = :id_accion_estrategica;