- 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;