--Da Eseguire come utente DWH
-- GESTIONE DEI REPORT
DROP MATERIALIZED VIEW dwh.mnp_dwh_don;

CREATE MATERIALIZED VIEW dwh.mnp_dwh_don
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento,
                 DECODE (SUBSTR (codice_gruppo, 1, 3),
                         'BKL', 'BKL',
                         DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                                 '00', 'Standard',
                                 'PHoc'
                                )
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                 a.marcaggio, a.sottomarcaggio,
                 a.codice_operatore_recipient,
                 a.codice_operatore_donating,
                 a.codice_operatore_rec_eff as recipient_effettivo,
                 a.codice_operatore_don_eff as donor_effettivo,
                 TRUNC (b.data_i_o) AS data_evento,
                 TO_CHAR (b.data_i_o, 'yy-iw') AS settimana_evento,
                 TO_CHAR (b.data_i_o, 'mm') AS mese_evento,
                 c.descr_stato AS descr_stato_evento,
                 ca.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato,
                         10, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato, 10, r.causale, NULL) AS causale_rifiuto,
                 COUNT (*) AS richieste
            FROM mnp.mnp_gestione_richiesta a,
                 mnp.mnp_storico_richiesta b,
                 mnp.mnp_stato c,
                 mnp.mnp_stato ca,
                 mnp.mnp_causale_rifiuto r
           WHERE (TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 183)
                                         AND TRUNC (SYSDATE)
                 )
             AND (a.id_richiesta = b.id_richiesta)
             AND (b.stato_a IN (1, 3, 4, 9, 10, 12, 16))
             AND (b.stato_a = c.id_stato)
             AND (a.stato = ca.id_stato)
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
        GROUP BY DECODE (SUBSTR (codice_gruppo, 1, 3),
                         'BKL', 'BKL',
                         DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                                 '00', 'Standard',
                                 'PHoc'
                                )
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 a.marcaggio,
                 a.sottomarcaggio,
                 a.codice_operatore_recipient,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 c.descr_stato,
                 ca.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 10, a.codicerifiutovalidazione, NULL),
                 DECODE (a.stato, 10, r.causale, NULL),
                 a.codice_operatore_rec_eff,
                 a.codice_operatore_don_eff) r
/

----------------------------------------------------------------
--CREA INDICE SU dwh.mnp_dwh_don

CREATE INDEX IDX_MNP_DWH_DON_1 ON dwh.mnp_dwh_don
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_MNP_DWH_DON_2 ON dwh.mnp_dwh_don
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;

-----------------------------------------------------------------

--------------------------------------------------------------------------------
DROP MATERIALIZED VIEW dwh.mnp_dwh_por 
/

CREATE MATERIALIZED VIEW dwh.mnp_dwh_por
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento, COUNT (*) AS richieste,
                 a.codice_operatore_donating AS donating,
                 a.codice_operatore_recipient AS recipient,
                 TRUNC (b.data_i_o) AS data_evento,
                 TO_CHAR (b.data_i_o, 'yy-iw') AS settimana_evento,
                 TO_CHAR (b.data_i_o, 'mm') AS mese_evento,
                 c.descr_stato AS stato_evento,
                 s.descr_stato AS stato_attuale,
                 a.codice_operatore_don_eff AS donor_effettivo,
                 a.codice_operatore_rec_eff AS recipient_effettivo
            FROM mnp.mnp_gestione_richiesta_porting a,
                 mnp.mnp_storico_porting b,
                 mnp.mnp_stato_porting c,
                 mnp.mnp_stato_porting s
           WHERE b.data_i_o BETWEEN TO_DATE (SYSDATE - 183) AND TRUNC (SYSDATE)
             AND a.id_richiesta = b.id_richiesta
             AND b.stato_a = c.id_stato
             AND a.stato = s.id_stato
        GROUP BY a.codice_operatore_donating,
                 a.codice_operatore_recipient,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 c.descr_stato,
                 s.descr_stato,
                 a.codice_operatore_rec_eff,
                 a.codice_operatore_don_eff) r
/
--------------------------------------------------------------------------------
----------------------------------------------------------------
--CREA INDICE SU dwh.mnp_dwh_por

CREATE INDEX IDX_MNP_DWH_POR_1 ON dwh.mnp_dwh_por
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

-----------------------------------------------------------------


DROP MATERIALIZED VIEW dwh.mnp_dwh_rec_push
/ 

CREATE MATERIALIZED VIEW dwh.mnp_dwh_rec_push
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento,
                 DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt AS tipo_servizio,
                 a.codice_operatore_donating AS donating,
                 a.codice_operatore_rec_eff AS recipient_effettivo,
                 a.codice_operatore_don_eff AS donor_effettivo,
                 TRUNC (b.data_i_o) AS data_evento,
                 TO_CHAR (b.data_i_o, 'yy-iw') AS settimana_evento,
                 TO_CHAR (b.data_i_o, 'mm') AS mese_evento,
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ) AS descr_stato_evento,
                 s.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato, 5, 'Scartata', 'Pic') AS pic_scarto,
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato,
                         7, r.causale,
                         9, r.causale,
                         NULL
                        ) AS causale_rifiuto,
                 COUNT (*) AS richieste, 
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione
            FROM mnp.mnp_gestione_richiesta_rec a,
                 mnp.mnp_storico_richiesta_rec b,
                 mnp.mnp_stato_rec c,
                 mnp.mnp_stato_rec s,
                 mnp.mnp_causale_rifiuto r,
                 mnp.mnp_gestione_richiesta_rec_ext t,
                 dbcgo_sap_anag_fv
           WHERE TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 183)
                                        AND TRUNC (SYSDATE)
             AND a.id_richiesta = b.id_richiesta
             AND a.id_richiesta = t.id_richiesta
             AND (   b.stato_a IN (2, 4, 6, 7, 8, 9, 12)
                  OR (b.stato_da = -1 AND b.stato_a = 3 AND a.stato <> 5)
                 )
             AND b.stato_a = c.id_stato
             AND a.stato = s.id_stato
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
             AND t.codice_dealer = dbcgo_sap_anag_fv.cod_id(+)
        GROUP BY DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ),
                 s.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 5, 'Scartata', 'Pic'),
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ),
                 DECODE (a.stato, 7, r.causale, 9, r.causale, NULL),
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione,
                 a.codice_operatore_rec_eff,
                 a.codice_operatore_don_eff) r
/

--------------------------------------------------------------------------------
----------------------------------------------------------------
--CREA INDICE SU dwh.mnp_dwh_rec_push

CREATE INDEX IDX_MNP_DWH_REC_1 ON dwh.mnp_dwh_rec_push
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_MNP_DWH_REC_2 ON dwh.mnp_dwh_rec_push
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;

-----------------------------------------------------------------

CREATE OR REPLACE VIEW mnp_delibera_don_view (
   id_prog,
   olo,
   ric_ricevute,
   ric_pic,
   data_evento,
   recipient_effettivo )
AS
((SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee
    FROM (SELECT desc_olo aa, NVL (rric, 0) bb, NVL (rpic, 0) cc,
                 NVL (data_evento, fun_giorni_meno (TRUNC (SYSDATE), 1)) dd,
                 recipient_effettivo ee
            FROM (SELECT   data_evento, codice_operatore_recipient,
                           SUM (richieste) AS rric
                      FROM mnp_dwh_don
                     WHERE data_evento = fun_giorni_meno (TRUNC (SYSDATE), 1)
                       AND stato_evento = 1
                       AND tipo_richiesta = 'Standard'
                  GROUP BY data_evento, codice_operatore_recipient) riric,
                 (SELECT   codice_operatore_recipient, SUM (richieste)
                                                                      AS rpic,
                           recipient_effettivo
                      FROM mnp_dwh_don
                     WHERE data_evento = fun_giorni_meno (TRUNC (SYSDATE), 1)
                       AND stato_evento = 1
                       AND stato_attuale <> 4
                       AND tipo_richiesta = 'Standard'
                  GROUP BY codice_operatore_recipient, recipient_effettivo) ripic,
                 (SELECT desc_olo
                    FROM mnp.mnp_olo
                   WHERE flag_terze_parti = 1) olo
           WHERE desc_olo = ripic.codice_operatore_recipient(+)
                 AND desc_olo = riric.codice_operatore_recipient(+)) r)
)
/

CREATE OR REPLACE VIEW mnp_dwh_don_dati_rifiuti_view (
   id_prog,
   count,
   cliente,
   ot,
   "STANDARD/HOC",
   marcaggio,
   recipient,
   data_evento,
   settimana_evento,
   mese_evento,
   stato_evento,
   cod_rifiuto,
   causale,
   causale_aggregata,
   sottomarcaggio,
   "CODICE_POP-PRP",
   donor_effettivo,
   recipient_effettivo )
AS
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.qq, r.ss, r.tt
   FROM (SELECT   SUM (mnp_dwh_don.richieste) aa, mnp_dwh_don.tipo_cliente bb,
                  mnp_dwh_don.nome_ot cc, mnp_dwh_don.tipo_richiesta dd,
                  mnp_dwh_don.marcaggio ee,
                  mnp_dwh_don.codice_operatore_recipient ff,
                  mnp_dwh_don.data_evento gg, mnp_dwh_don.settimana_evento hh,
                  TO_CHAR (mnp_dwh_don.data_evento, 'YY-MM') ii,
                  mnp_dwh_don.descr_stato_evento ll,
                  mnp_dwh_don.cod_rifiuto mm, mnp_dwh_don.causale_rifiuto nn,
                  DECODE (cod_rifiuto,
                          12, 'ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                          'ALTRO'
                         ) oo,
                  mnp_dwh_don.sottomarcaggio pp,
                  mnp_dwh_don.codice_pre_post_pagato qq,
                  mnp_dwh_don.donor_effettivo ss,
                  mnp_dwh_don.recipient_effettivo tt
             FROM mnp_dwh_don
            WHERE mnp_dwh_don.stato_attuale = 10
         GROUP BY mnp_dwh_don.tipo_cliente,
                  mnp_dwh_don.nome_ot,
                  mnp_dwh_don.tipo_richiesta,
                  mnp_dwh_don.marcaggio,
                  mnp_dwh_don.codice_operatore_recipient,
                  mnp_dwh_don.data_evento,
                  mnp_dwh_don.settimana_evento,
                  TO_CHAR (mnp_dwh_don.data_evento, 'YY-MM'),
                  mnp_dwh_don.descr_stato_evento,
                  mnp_dwh_don.cod_rifiuto,
                  mnp_dwh_don.causale_rifiuto,
                  DECODE (cod_rifiuto,
                          12, 'ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                          'ALTRO'
                         ),
                  mnp_dwh_don.sottomarcaggio,
                  mnp_dwh_don.codice_pre_post_pagato,
                  mnp_dwh_don.donor_effettivo,
                  mnp_dwh_don.recipient_effettivo) r
)
/
---------------------------------------------------------------------------------

-- CREA LA VISTA MNP_DWH_REC_DATI_RIFIUTI_VIEW


CREATE OR REPLACE VIEW MNP_DWH_REC_DATI_RIFIUTI_VIEW
(ID_PROG,
 RICHIESTE,
 TIPO_CLIENTE, 
 NOME_OT, 
 TIPO_RICHIESTA, 
 DONATING,
 DATA_EVENTO, 
 SETTIMANA_EVENTO,
 DESCR_STATO_EVENTO, 
 CAUSALE_RIFIUTO,
 COD_RIFIUTO,
 CODICE_PRE_POST_PAGATO, 
 DESC_STATO_ATTUALE,
 DONOR_EFFETTIVO,
 RECIPIENT_EFFETTIVO)
AS
(
SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll, r.mm, r.nn, r.oo, r.pp
FROM 
(
SELECT 
Sum(MNP_DWH_REC_PUSH.RICHIESTE)aa, 
MNP_DWH_REC_PUSH.TIPO_CLIENTE bb, 
MNP_DWH_REC_PUSH.NOME_OT cc,
MNP_DWH_REC_PUSH.TIPO_RICHIESTA dd, 
MNP_DWH_REC_PUSH.DONATING ee, 
MNP_DWH_REC_PUSH.DATA_EVENTO ff, 
MNP_DWH_REC_PUSH.SETTIMANA_EVENTO gg, 
MNP_DWH_REC_PUSH.DESCR_STATO_EVENTO hh, 
MNP_DWH_REC_PUSH.CAUSALE_RIFIUTO ii,
MNP_DWH_REC_PUSH.COD_RIFIUTO ll,
MNP_DWH_REC_PUSH.CODICE_PRE_POST_PAGATO mm,
MNP_DWH_REC_PUSH.DESCR_STATO_ATTUALE nn, 
MNP_DWH_REC_PUSH.DONOR_EFFETTIVO oo,
MNP_DWH_REC_PUSH.RECIPIENT_EFFETTIVO pp
FROM MNP_DWH_REC_PUSH
WHERE (MNP_DWH_REC_PUSH.STATO_ATTUALE IN (7,9))
GROUP BY 
MNP_DWH_REC_PUSH.TIPO_CLIENTE, 
MNP_DWH_REC_PUSH.NOME_OT, 
MNP_DWH_REC_PUSH.TIPO_RICHIESTA, 
MNP_DWH_REC_PUSH.DONATING, 
MNP_DWH_REC_PUSH.DATA_EVENTO, 
MNP_DWH_REC_PUSH.SETTIMANA_EVENTO, 
MNP_DWH_REC_PUSH.DESCR_STATO_EVENTO,
MNP_DWH_REC_PUSH.CAUSALE_RIFIUTO, 
MNP_DWH_REC_PUSH.COD_RIFIUTO, 
MNP_DWH_REC_PUSH.CODICE_PRE_POST_PAGATO,
MNP_DWH_REC_PUSH.DESCR_STATO_ATTUALE, 
MNP_DWH_REC_PUSH.DONOR_EFFETTIVO,
MNP_DWH_REC_PUSH.RECIPIENT_EFFETTIVO
)r);







---------------------------------------------------------------------------------



CREATE OR REPLACE VIEW mnp_dwh_rec_dati_view (
   id_prog,
   count,
   cliente,
   ot,
   donating,
   "STANDARD/HOC",
   data_evento,
   settimana_evento,
   stato_evento,
   stato_attuale,
   scartata_pic,
   "CODICE_POP-PRP",
   mese_evento,
   donor_effettivo,
   recipient_effettivo )
AS
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.oo,r.donor_effettivo, r.recipient_effettivo
   FROM (SELECT   SUM (mnp_dwh_rec_push.richieste) aa,
                  mnp_dwh_rec_push.tipo_cliente bb,
                  mnp_dwh_rec_push.nome_ot cc, mnp_dwh_rec_push.donating dd,
                  mnp_dwh_rec_push.tipo_richiesta ee,
                  mnp_dwh_rec_push.data_evento ff,
                  mnp_dwh_rec_push.settimana_evento gg,
                  mnp_dwh_rec_push.descr_stato_evento hh,
                  mnp_dwh_rec_push.descr_stato_attuale ii,
                  mnp_dwh_rec_push.pic_scarto ll,
                  mnp_dwh_rec_push.codice_pre_post_pagato mm,
                  mnp_dwh_rec_push.donor_effettivo ,
                  mnp_dwh_rec_push.recipient_effettivo ,
                  TO_CHAR (mnp_dwh_rec_push.data_evento, 'YY-MM') oo
             FROM mnp_dwh_rec_push
            WHERE (mnp_dwh_rec_push.donating <> 'TIMT')
         GROUP BY mnp_dwh_rec_push.tipo_cliente,
                  mnp_dwh_rec_push.nome_ot,
                  mnp_dwh_rec_push.tipo_richiesta,
                  mnp_dwh_rec_push.donating,
                  mnp_dwh_rec_push.data_evento,
                  mnp_dwh_rec_push.settimana_evento,
                  mnp_dwh_rec_push.descr_stato_evento,
                  mnp_dwh_rec_push.descr_stato_attuale,
                  mnp_dwh_rec_push.pic_scarto,
                  mnp_dwh_rec_push.codice_pre_post_pagato,
                  mnp_dwh_rec_push.recipient_effettivo,
                  mnp_dwh_rec_push.donor_effettivo,
                  TO_CHAR (mnp_dwh_rec_push.data_evento, 'YY-MM')) r
)
/



CREATE OR REPLACE VIEW mnp_mob_int_view (
   id_prog,
   data_aggiornamento,
   tipo_richiesta,
   tipo_cliente,
   codice_operatore_donating,
   codice_operatore_recipient,
   data_evento,
   settimana_evento,
   anno_mese_evento,
   codice_pre_post_pagato,
   richieste,
   donor_effettivo,
   recipient_effettivo )
AS
(SELECT ROWNUM, r.*
   FROM (SELECT   a.data_aggiornamento, a.tipo_richiesta, a.tipo_cliente,
                  a.codice_operatore_donating, a.codice_operatore_recipient,
                  a.data_evento, a.settimana_evento,
                  TO_CHAR (a.data_evento, 'YY-MM'), a.codice_pre_post_pagato,
                  SUM (a.richieste),a.donor_effettivo,a.recipient_effettivo
             FROM mnp_dwh_don a
            WHERE a.descr_stato_evento = 'ESPLETATA'
              AND a.data_evento >= (SYSDATE - 183)
         GROUP BY a.data_aggiornamento,
                  a.tipo_richiesta,
                  a.tipo_cliente,
                  a.codice_operatore_donating,
                  a.codice_operatore_recipient,
                  a.data_evento,
                  a.settimana_evento,
                  TO_CHAR (a.data_evento, 'YY-MM'),
                  a.codice_pre_post_pagato,
                  a.donor_effettivo,a.recipient_effettivo
         UNION
         SELECT   b.data_aggiornamento, b.tipo_richiesta, b.tipo_cliente,
                  b.donating, 'TIMG', b.data_evento, b.settimana_evento,
                  TO_CHAR (b.data_evento, 'YY-MM'), b.codice_pre_post_pagato,
                  SUM (b.richieste), b.donor_effettivo,b.recipient_effettivo
             FROM mnp_dwh_rec_push b
            WHERE b.descr_stato_evento = 'EVASA'
              AND b.data_evento >= (SYSDATE - 183)
         GROUP BY b.data_aggiornamento,
                  b.tipo_richiesta,
                  b.tipo_cliente,
                  b.donating,
                  'TIMG',
                  b.data_evento,
                  b.settimana_evento,
                  TO_CHAR (b.data_evento, 'YY-MM'),
                  b.codice_pre_post_pagato,
                  b.donor_effettivo,b.recipient_effettivo
         UNION
         SELECT   c.data_aggiornamento, 'TERZE PARTI', 'TERZE PARTI',
                  c.donating, c.recipient, c.data_evento, c.settimana_evento,
                  TO_CHAR (c.data_evento, 'YY-MM'), 'TERZE PARTI',
                  SUM (c.richieste), c.donor_effettivo, c.recipient_effettivo
             FROM mnp_dwh_por c
            WHERE c.stato_evento = 'ESPLETATA'
              AND c.data_evento >= (SYSDATE - 183)
         GROUP BY c.data_aggiornamento,
                  'TERZE PARTI',
                  'TERZE PARTI',
                  c.donating,
                  c.recipient,
                  c.donor_effettivo, c.recipient_effettivo,
                  c.data_evento,
                  c.settimana_evento,
                  TO_CHAR (c.data_evento, 'YY-MM'),
                  'TERZE PARTI') r
)
/


CREATE OR REPLACE VIEW mnp_recipient_canale_view (
   id_prog,
   data_aggiornamento,
   tipo_richiesta,
   tipo_cliente,
   nome_ot,
   codice_dealer,
   tipo_servizio,
   donating,
   data_evento,
   settimana_evento,
   mese_evento,
   descr_stato_evento,
   desc_stato_attuale,
   stato_evento,
   stato_attuale,
   cod_rifiuto,
   causale_rifiuto,
   canale_acquisizione,
   sottocanale_acquisizione,
   riga,
   donor_effettivo,
   recipient_effettivo )
AS
(
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.qq, r.rr, r.ss, r.tt, r.uu, donor_effettivo, recipient_effettivo
   FROM (SELECT   mnp_dwh_rec_push.data_aggiornamento aa,
                  mnp_dwh_rec_push.tipo_richiesta bb,
                  mnp_dwh_rec_push.tipo_cliente cc,
                  mnp_dwh_rec_push.nome_ot dd,
                  mnp_dwh_rec_push.codice_dealer ee,
                  mnp_dwh_rec_push.tipo_servizio ff,
                  mnp_dwh_rec_push.donating gg,
                  mnp_dwh_rec_push.data_evento hh,
                  mnp_dwh_rec_push.settimana_evento ii,
                  mnp_dwh_rec_push.mese_evento ll,
                  mnp_dwh_rec_push.descr_stato_evento mm,
                  mnp_dwh_rec_push.descr_stato_attuale nn,
                  mnp_dwh_rec_push.stato_evento oo,
                  mnp_dwh_rec_push.stato_attuale pp,
                  mnp_dwh_rec_push.cod_rifiuto qq,
                  mnp_dwh_rec_push.causale_rifiuto rr,
                  mnp_dwh_rec_push.canale_acquisizione ss,
                  mnp_dwh_rec_push.sottocanale_acquisizione tt,
                  SUM (mnp_dwh_rec_push.richieste) uu,
                  mnp_dwh_rec_push.donor_effettivo,
                  mnp_dwh_rec_push.recipient_effettivo
             FROM mnp_dwh_rec_push
         GROUP BY mnp_dwh_rec_push.data_aggiornamento,
                  mnp_dwh_rec_push.tipo_richiesta,
                  mnp_dwh_rec_push.tipo_cliente,
                  mnp_dwh_rec_push.nome_ot,
                  mnp_dwh_rec_push.codice_dealer,
                  mnp_dwh_rec_push.tipo_servizio,
                  mnp_dwh_rec_push.donating,
                  mnp_dwh_rec_push.data_evento,
                  mnp_dwh_rec_push.settimana_evento,
                  mnp_dwh_rec_push.mese_evento,
                  mnp_dwh_rec_push.descr_stato_evento,
                  mnp_dwh_rec_push.descr_stato_attuale,
                  mnp_dwh_rec_push.stato_evento,
                  mnp_dwh_rec_push.stato_attuale,
                  mnp_dwh_rec_push.cod_rifiuto,
                  mnp_dwh_rec_push.causale_rifiuto,
                  mnp_dwh_rec_push.canale_acquisizione,
                  mnp_dwh_rec_push.donor_effettivo,
                  mnp_dwh_rec_push.recipient_effettivo,
                  mnp_dwh_rec_push.sottocanale_acquisizione) r)
)
/

CREATE OR REPLACE VIEW mnp_dwh_don_dati_view (
   id_prog,
   count,
   cliente,
   ot,
   "STANDARD/HOC",
   marcaggio,
   recipient,
   data_evento,
   settimana_evento,
   mese_evento,
   stato_evento,
   stato_attuale,
   sottomarcaggio,
   "CODICE_POP-PRP",
   donor_effettivo,
   recipient_effettivo )
AS
(
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.ss
   FROM (SELECT   SUM (mnp_dwh_don.richieste) aa, mnp_dwh_don.tipo_cliente bb,
                  mnp_dwh_don.nome_ot cc, mnp_dwh_don.tipo_richiesta dd,
                  mnp_dwh_don.marcaggio ee,
                  mnp_dwh_don.codice_operatore_recipient ff,
                  mnp_dwh_don.data_evento gg, mnp_dwh_don.settimana_evento hh,
                  TO_CHAR (mnp_dwh_don.data_evento, 'YY-MM') ii,
                  mnp_dwh_don.descr_stato_evento ll,
                  mnp_dwh_don.descr_stato_attuale mm,
                  mnp_dwh_don.sottomarcaggio nn,
                  mnp_dwh_don.codice_pre_post_pagato oo,
                  mnp_dwh_don.donor_effettivo pp,
                  mnp_dwh_don.recipient_effettivo ss
             FROM mnp_dwh_don
         GROUP BY mnp_dwh_don.tipo_cliente,
                  mnp_dwh_don.nome_ot,
                  mnp_dwh_don.tipo_richiesta,
                  mnp_dwh_don.marcaggio,
                  mnp_dwh_don.codice_operatore_recipient,
                  mnp_dwh_don.data_evento,
                  mnp_dwh_don.settimana_evento,
                  TO_CHAR (mnp_dwh_don.data_evento, 'YY-MM'),
                  mnp_dwh_don.descr_stato_evento,
                  mnp_dwh_don.descr_stato_attuale,
                  mnp_dwh_don.sottomarcaggio,
                  mnp_dwh_don.codice_pre_post_pagato,
                  mnp_dwh_don.donor_effettivo,
                  mnp_dwh_don.recipient_effettivo) r)
)
/
