SIGESA: SELECT / UPDATE para determinar Rangos Incorrectos

  • Estas consulta determinan cuales meta poa evaluación tienen datos incorrrectos en el rango
--*********************************************************************************************
--CATÁLOGO: CONSULTA DE DATOS ERRONEOS
--*********************************************************************************************
SELECT 
    MPE.ID_META_POA_EVALUACION,
    MPE.EJECUCION,
    MPE.NOMBRE_RANGO,
    COALESCE(RC.NOMBRE, 'Sin coincidencia') AS VALOR_CORRECTO
FROM
    META_POA_EVALUACION MPE
    INNER JOIN META_POA_DATO_CAT MPDC ON MPDC.META_POA = MPE.META_POA AND MPDC.ETAPA_PLAN = :etapaPlan
    INNER JOIN DATO_FORMULA DF ON DF.ID_DATO_FORMULA = MPDC.DATO_FORMULA
    INNER JOIN FORMULA_CALCULO FC ON FC.ID_FORMULA_CALCULO = DF.FORMULA_CALCULO
    LEFT JOIN RANGO_CONSIDERACION RC 
        ON RC.FORMULA_CALCULO = FC.ID_FORMULA_CALCULO 
        AND ROUND(MPE.EJECUCION,2) BETWEEN ROUND(RC.MINIMO,2) AND ROUND(RC.MAXIMO,2)
where 
MPE.ETAPA_PLAN = :etapaPlan
AND MPE.EJECUCION IS NOT NULL
AND (MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL)
ORDER BY MPE.ID_META_POA_EVALUACION;



--*********************************************************************************************
--CATÁLOGO: CONSULTA DE UPDATE’S
--*********************************************************************************************
SELECT 
    'UPDATE META_POA_EVALUACION SET NOMBRE_RANGO = ' || 
    CASE 
        WHEN MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL THEN
            COALESCE('''' || RC.NOMBRE || '''', 'NULL')
        ELSE 
            '''' || MPE.NOMBRE_RANGO || ''''
    END || ' WHERE ID_META_POA_EVALUACION = ' || MPE.ID_META_POA_EVALUACION || ';' AS UPDATE_STATEMENT
FROM
    META_POA_EVALUACION MPE
    INNER JOIN META_POA_DATO_CAT MPDC ON MPDC.META_POA = MPE.META_POA AND MPDC.ETAPA_PLAN = :etapaPlan
    INNER JOIN DATO_FORMULA DF ON DF.ID_DATO_FORMULA = MPDC.DATO_FORMULA
    INNER JOIN FORMULA_CALCULO FC ON FC.ID_FORMULA_CALCULO = DF.FORMULA_CALCULO
    LEFT JOIN RANGO_CONSIDERACION RC 
        ON RC.FORMULA_CALCULO = FC.ID_FORMULA_CALCULO 
        AND ROUND(MPE.EJECUCION,2) BETWEEN ROUND(RC.MINIMO,2) AND ROUND(RC.MAXIMO,2)
WHERE 
    MPE.ETAPA_PLAN = :etapaPlan
    AND MPE.EJECUCION IS NOT NULL
    AND (MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL)
ORDER BY MPE.ID_META_POA_EVALUACION;


--*********************************************************************************************
--PERSONALIZADOS: CONSULTA DE DATOS ERRONEOS
--*********************************************************************************************
SELECT 
    MPE.ID_META_POA_EVALUACION,
    MPE.EJECUCION,
    MPE.NOMBRE_RANGO,
    COALESCE(RC.NOMBRE, 'Sin coincidencia') AS VALOR_CORRECTO
FROM
    META_POA_EVALUACION MPE
    INNER JOIN META_POA_DATO_PER MPDP ON MPDP.META_POA = MPE.META_POA AND MPDP.ETAPA_PLAN = :etapaPlan
    INNER JOIN DATO_FORMULA DF ON DF.ID_DATO_FORMULA = MPDP.DATO_FORMULA
    INNER JOIN FORMULA_CALCULO FC ON FC.ID_FORMULA_CALCULO = DF.FORMULA_CALCULO
    LEFT JOIN RANGO_CONSIDERACION RC 
        ON RC.FORMULA_CALCULO = FC.ID_FORMULA_CALCULO 
        AND ROUND(MPE.EJECUCION,2) BETWEEN ROUND(RC.MINIMO,2) AND ROUND(RC.MAXIMO,2)
where 
MPE.ETAPA_PLAN = :etapaPlan
AND MPE.EJECUCION IS NOT NULL
AND (MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL)
ORDER BY MPE.ID_META_POA_EVALUACION;



--*********************************************************************************************
--PERSONALIZADOS: CONSULTA DE UPDATE’S
--*********************************************************************************************
SELECT 
    'UPDATE META_POA_EVALUACION SET NOMBRE_RANGO = ' || 
    CASE 
        WHEN MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL THEN
            COALESCE('''' || RC.NOMBRE || '''', 'NULL')
        ELSE 
            '''' || MPE.NOMBRE_RANGO || ''''
    END || ' WHERE ID_META_POA_EVALUACION = ' || MPE.ID_META_POA_EVALUACION || ';' AS UPDATE_STATEMENT
FROM
    META_POA_EVALUACION MPE
    INNER JOIN META_POA_DATO_PER MPDP ON MPDP.META_POA = MPE.META_POA AND MPDP.ETAPA_PLAN = :etapaPlan
    INNER JOIN DATO_FORMULA DF ON DF.ID_DATO_FORMULA = MPDP.DATO_FORMULA
    INNER JOIN FORMULA_CALCULO FC ON FC.ID_FORMULA_CALCULO = DF.FORMULA_CALCULO
    LEFT JOIN RANGO_CONSIDERACION RC 
        ON RC.FORMULA_CALCULO = FC.ID_FORMULA_CALCULO 
        AND ROUND(MPE.EJECUCION,2) BETWEEN ROUND(RC.MINIMO,2) AND ROUND(RC.MAXIMO,2)
WHERE 
    MPE.ETAPA_PLAN = :etapaPlan
    AND MPE.EJECUCION IS NOT NULL
    AND (MPE.NOMBRE_RANGO <> COALESCE(RC.NOMBRE, 'Sin coincidencia') OR MPE.NOMBRE_RANGO IS NULL)
ORDER BY MPE.ID_META_POA_EVALUACION;