CREATE OR REPLACE PROCEDURE P_REPORT_KPI(P_DATA_DA DATE, P_DATA_A DATE) IS v_mese_comp varchar2(10); v_rich_attese_controllo number; v_rich_attese_contrattuali number; v_rich_inviate_controllo number; v_perc_controllo number; v_rich_ricevute_contrattuali number; v_perc_contrattuali number; BEGIN BEGIN -- ESTRAZIONE DELLE INFORMAZIONI PER I KPI DI CONTROLLO SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC INTO v_mese_comp, v_rich_attese_controllo, v_rich_inviate_controllo, v_perc_controllo FROM ( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12 FROM MNP.MNP_GESTIONE_RICHIESTA GR, MNP.MNP_XML_RICHIESTA_OUT MTI, MNP.MNP_XML_OUT XO WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA AND MTI.NOME_FILE= XO.NOME_FILE AND XO.TIPO_FILE =6 AND XO.DESTINATARIO <> 'NPTS' AND XO.DATA_INVIO <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI') AND GR.ABBONATO_PREPAGATO = 'PREPAGATO' AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0 GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') ) A, ( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE FROM MNP_GESTIONE_RICHIESTA GR WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A AND GR.ABBONATO_PREPAGATO = 'PREPAGATO' AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0 GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') )B WHERE A.MESE_COMP = B.MESE_COMP; EXCEPTION WHEN OTHERS THEN v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY'); v_rich_attese_controllo := 0; v_rich_inviate_controllo := 0; v_perc_controllo := 0; END; -- BEGIN -- ESTRAZIONE DELLE INFORMAZIONI PER I KPI CONTRATTUALI SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC INTO v_mese_comp, v_rich_attese_contrattuali, v_rich_ricevute_contrattuali, v_perc_contrattuali FROM ( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12 FROM MNP_GESTIONE_RICHIESTA GR, ( select t.id_richiesta, min(t.data_ricezione) data_ricezione from mnp_mss_cessazione_in t group by id_richiesta) MTI WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA(+) AND GR.STATO IN (15, 16) AND MTI.DATA_RICEZIONE <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI') AND GR.ABBONATO_PREPAGATO = 'PREPAGATO' GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') ) A, ( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE FROM MNP_GESTIONE_RICHIESTA GR WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A AND GR.ABBONATO_PREPAGATO = 'PREPAGATO' AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0 GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') )B WHERE A.MESE_COMP = B.MESE_COMP; EXCEPTION WHEN OTHERS THEN v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY'); v_rich_attese_contrattuali := 0; v_rich_ricevute_contrattuali := 0; v_perc_contrattuali := 0; END; -- INSERIMENTO DATI IN TABELLA INSERT INTO MNP_DW_REPORT_KPI (MESE_COMP, NUM_RICH_ATTESE_CONTROLLO, NUM_RICH_ATTESE_CONTRATTUALI, NUM_RICH_OK12_CONTROLLO, NUM_RICH_OK12_CONTRATTUALI, PERC_CONTROLLO, PERC_CONTRATTUALI, DATA_ESECUZIONE) VALUES (v_mese_comp, v_rich_attese_controllo, v_rich_attese_contrattuali, v_rich_inviate_controllo, v_rich_ricevute_contrattuali, v_perc_controllo, v_perc_contrattuali, SYSDATE); COMMIT; END P_REPORT_KPI; /