DBA Data[Home] [Help]

APPS.BIX_EMAILS_SUMMARY_PKG SQL Statements

The following lines contain the word 'select', 'insert', 'update' or 'delete':

Line: 44

G_A_UPDATED_SR NUMBER;
Line: 46

G_DELETED NUMBER;
Line: 47

G_A_DELETED NUMBER;
Line: 113

  IF (FND_PROFILE.DEFINED('BIX_DM_DELETE_SIZE')) THEN
    g_commit_chunk_size := TO_NUMBER(FND_PROFILE.VALUE('BIX_DM_DELETE_SIZE'));
Line: 147

This procedure inserts  rows into BIX_WORKER_JOBS  depening on no of workers and number of days the program need
to collect data.

*/

PROCEDURE register_jobs IS

  l_start_date_range DATE;
Line: 162

  SELECT ceil(g_collect_end_date - g_collect_start_date)
  INTO   l_count
  FROM   dual;
Line: 170

  Delete BIX_WORKER_JOBS WHERE OBJECT_NAME = 'BIX_EMAIL_DETAILS_F';
Line: 189

      INSERT INTO BIX_WORKER_JOBS(OBJECT_NAME
                                , START_DATE_RANGE
                                , END_DATE_RANGE
                                , WORKER_NUMBER
                                , STATUS)
                            VALUES (
                                 'BIX_EMAIL_DETAILS_F'
                                , l_start_date_range
                                , l_end_date_range
                                , l_count
                                , 'UNASSIGNED');
Line: 275

    SELECT depth
    INTO   p_prev_depth
    FROM   bix_interactions_temp
    WHERE  interaction_id = p_interaction_id
    FOR UPDATE OF depth;
Line: 297

    SELECT /*+ ordered */
      1
    INTO   p_curr_depth
    FROM jtf_ih_activities actv,
         jtf_ih_media_items imtm,
         jtf_ih_media_item_lc_segs mseg,
         jtf_ih_media_itm_lc_seg_tys mtys
    WHERE actv.interaction_id = p_interaction_id
    AND   imtm.media_id = actv.media_id
    AND   mseg.media_id = imtm.media_id
    AND   mtys.milcs_type_id = mseg.milcs_type_id
    AND   mtys.milcs_code IN ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
    AND   NOT EXISTS (
            SELECT 1
            FROM   jtf_ih_interaction_inters inter
            WHERE  inter.interact_interaction_idrelates = actv.interaction_id )
    AND   rownum <= 1;
Line: 319

		 SELECT
		 --nvl(max(decode(milcs_code,'EMAIL_REPLY',depth,'EMAIL_AUTO_REPLY',depth,0)),0) depth
		 count(distinct media_id) depth
		 into p_curr_depth
		 FROM
		 (
		  SELECT inv2.interaction_id,
          mseg.media_id media_id,
		  --first_Value(milcs_code) over (partition by mseg.media_id order by mseg.start_Date_time desc) milcs_code,
           depth
           FROM
           (SELECT
                interact_interaction_id interaction_id /* Child interaction*/,
                level depth
              FROM
                jtf_ih_interaction_inters
              START WITH interact_interaction_idrelates = p_interaction_id
              CONNECT BY interact_interaction_idrelates = PRIOR interact_interaction_id
              ORDER BY creation_date DESC) inv2,      jtf_ih_activities actv,
             jtf_ih_media_items mitm,
             jtf_ih_media_item_lc_segs mseg,
             jtf_ih_media_itm_lc_seg_tys mtys
           WHERE actv.interaction_id = inv2.interaction_id
           AND   mitm.media_id = actv.media_id
           AND   mitm.media_id = mseg.media_id
           AND   mseg.milcs_type_id = mtys.milcs_type_id
           AND 	 mitm.direction='INBOUND' and mitm.media_item_type='EMAIL'
		   AND   milcs_code in ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
		);
Line: 351

				  SELECT /*+ ordered */
					  1
					INTO   p_parent_depth
					FROM jtf_ih_activities actv,
						 jtf_ih_media_items imtm,
						 jtf_ih_media_item_lc_segs mseg,
						 jtf_ih_media_itm_lc_seg_tys mtys
					WHERE actv.interaction_id = p_interaction_id
					AND   imtm.media_id = actv.media_id
					AND   mseg.media_id = imtm.media_id
					AND   mtys.milcs_type_id = mseg.milcs_type_id
					AND   mtys.milcs_code IN ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
					AND   rownum <= 1;
Line: 402

the time_ids are found out and updated using a sinle MERGE. We do not use a ROLLUP here.

*/

PROCEDURE collect_resolutions IS

  CURSOR all_root_interactions IS
  SELECT DISTINCT interaction_id from
  (
  SELECT
    incr.interaction_id
  FROM    jtf_ih_interactions incr,
          jtf_ih_activities   actv,
          jtf_ih_media_items  imtm
  WHERE incr.start_date_time between g_collect_start_date and g_collect_end_date
  AND   actv.interaction_id = incr.interaction_id
  AND   imtm.media_id = actv.media_id
  AND   imtm.media_item_type = 'EMAIL'
  AND   imtm.direction = 'INBOUND'
  AND   NOT EXISTS (
    SELECT 1
    FROM   jtf_ih_interaction_inters inter
    WHERE
           --?????? comment out???
           inter.INTERACT_INTERACTION_IDRELATES = incr.interaction_id
           OR
            inter.interact_interaction_id = incr.interaction_id
                    )
  AND NOT EXISTS (
    SELECT 1
    FROM   jtf_ih_media_item_lc_segs mseg1,
           jtf_ih_media_itm_lc_seg_tys mtys1
    WHERE mseg1.media_id = imtm.media_id
    AND   mseg1.milcs_type_id = mtys1.milcs_type_id
    AND   mtys1.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY') )
  UNION ALL
  SELECT
    incr.interaction_id
  FROM   jtf_ih_interactions          incr,
         jtf_ih_activities            actv,
         jtf_ih_media_items           imtm,
         jtf_ih_media_item_lc_segs    mseg,
         jtf_ih_media_itm_lc_seg_tys  mtys
  WHERE actv.interaction_id = incr.interaction_id
  AND   imtm.media_id = actv.media_id
  AND   imtm.media_item_type = 'EMAIL'
  AND   imtm.direction = 'INBOUND'
  AND   mseg.media_id = imtm.media_id
  AND   mtys.milcs_type_id = mseg.milcs_type_id
  AND   mtys.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY')
  AND   mseg.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
  AND   NOT EXISTS (
    SELECT 1
    FROM   jtf_ih_interaction_inters inter
    WHERE  inter.INTERACT_INTERACTION_IDRELATES = incr.interaction_id
    OR     inter.interact_interaction_id = incr.interaction_id)
  UNION ALL
  SELECT interact_interaction_idrelates
  FROM (
    SELECT interact_interaction_idrelates
    FROM   jtf_ih_interaction_inters
    START WITH interact_interaction_id IN
                        (SELECT
                           intr.interact_interaction_id
                         FROM    jtf_ih_interaction_inters intr,
                                 jtf_ih_activities actv,
                                 jtf_ih_media_items imtm
                         WHERE intr.creation_date between g_collect_start_date and g_collect_end_date
                         AND   actv.interaction_id = intr.interact_interaction_id
                         AND   imtm.media_id = actv.media_id
                         AND   imtm.media_item_type = 'EMAIL'
                         AND   imtm.direction = 'INBOUND'
                         AND   NOT EXISTS (
                           SELECT 1
                           FROM   jtf_ih_interaction_inters inter
                           WHERE  inter.INTERACT_INTERACTION_IDRELATES = intr.interact_interaction_id)
                         UNION
                         SELECT
                           intr.interact_interaction_id
                         FROM   jtf_ih_interaction_inters    intr,
                                jtf_ih_activities            actv,
                                jtf_ih_media_items           imtm,
                                jtf_ih_media_item_lc_segs    mseg,
                                jtf_ih_media_itm_lc_seg_tys  mtys
                         WHERE actv.interaction_id = intr.interact_interaction_id
                         AND   imtm.media_id = actv.media_id
                         AND   mseg.media_id = imtm.media_id
                         AND   mtys.milcs_type_id = mseg.milcs_type_id
                         AND   mtys.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY')
                         AND   mseg.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
                         AND   NOT EXISTS (
                           SELECT 1
                           FROM   jtf_ih_interaction_inters inter
                           WHERE  inter.INTERACT_INTERACTION_IDRELATES = intr.interact_interaction_id))
    CONNECT BY PRIOR interact_interaction_idrelates = interact_interaction_id ) inv2
  WHERE NOT EXISTS (
    SELECT 1 FROM jtf_ih_interaction_inters intr
    WHERE intr.interact_interaction_id = inv2.interact_interaction_idrelates)
  AND EXISTS (
    SELECT 1
    FROM   jtf_ih_activities actv,
           jtf_ih_media_items imtm
    WHERE  actv.interaction_id = inv2.interact_interaction_idrelates
    AND    actv.media_id = imtm.media_id
    AND   imtm.media_item_type = 'EMAIL'
    AND   imtm.direction = 'INBOUND')
    )
    ;
Line: 619

        SELECT
          nvl(intr.resource_id, -1),
          nvl(intr.party_id, -1),
          trunc(intr.start_date_time),
          nvl(mitm.source_id, -1),
          nvl(irc.route_classification_id, -1)
        INTO
          l_agent_id(i),
          l_party_id(i),
          l_start_date_time(i),
          l_email_account_id(i),
          l_classification_id(i)
        FROM
           jtf_ih_interactions intr,
           jtf_ih_activities actv,
           jtf_ih_media_items mitm,
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) irc
        WHERE intr.interaction_id = l_root_interaction_id(i)
        AND actv.interaction_id = intr.interaction_id
        AND mitm.media_id = actv.media_id
        AND mitm.direction = 'INBOUND'
        AND mitm.media_item_type = 'EMAIL'
        AND mitm.classification = irc.name(+)
        AND rownum <= 1;
Line: 662

        SELECT
          week_id,
          week_start_date,
          ent_period_id,
          ent_period_start_date,
          ent_qtr_id,
          ent_qtr_start_date,
          ent_year_id,
          ent_year_start_date
        INTO
          l_week_id(i),
          l_week_start_date(i),
          l_ent_period_id(i),
          l_ent_period_start_date(i),
          l_ent_qtr_id(i),
          l_ent_qtr_start_date(i),
          l_ent_year_id(i),
          l_ent_year_start_date(i)
        FROM
          fii_time_day
        WHERE report_date = trunc(l_start_date_time(i));
Line: 714

      /* Update the half-hour, day, week, month, quarter and year rows of ICI summary table */
      /*
	 For period type id =1 (day level), we delete the records before arriving at this procedure,
	 so one and done becomes 0.. */

	 FORALL i IN l_root_interaction_id.FIRST .. l_root_interaction_id.LAST

	MERGE INTO bix_email_details_f bed
	 USING (
  		  SELECT
		   l_agent_id(i) agent_id
		  ,l_email_account_id(i) email_account_id
		  ,l_classification_id(i) email_classification_id
		  ,l_party_id(i) party_id
		  ,to_number(to_char(l_start_date_time(i), 'J')) time_id
		  ,1  period_type_id
		  ,trunc(l_start_date_time(i)) period_start_date
		  ,'00:00' period_start_time
            ,l_one_done_rsln(i) one_rsln_in_period
		  ,l_two_done_rsln(i) two_rsln_in_period
		  ,l_three_done_rsln(i) three_rsln_in_period
		  ,l_four_done_rsln(i) four_rsln_in_period
		  ,l_intr_thread(i) interaction_threads_in_period
	     FROM DUAL
		UNION ALL
		SELECT
		   l_agent_id(i) agent_id
		  ,l_email_account_id(i) email_account_id
		  ,l_classification_id(i) email_classification_id
		  ,l_party_id(i) party_id
		  ,l_week_id(i) time_id
		  ,16  period_type_id
		  ,l_week_start_date(i) period_start_date
		  ,'00:00' period_start_time
            ,l_one_done_rsln(i) one_rsln_in_period
		  ,l_two_done_rsln(i) two_rsln_in_period
		  ,l_three_done_rsln(i) three_rsln_in_period
		  ,l_four_done_rsln(i) four_rsln_in_period
		  ,l_intr_thread(i) interaction_threads_in_period
	     FROM DUAL
		UNION ALL
		SELECT
		   l_agent_id(i) agent_id
		  ,l_email_account_id(i) email_account_id
		  ,l_classification_id(i) email_classification_id
		  ,l_party_id(i) party_id
		  ,l_ent_period_id(i) time_id
		  ,32  period_type_id
		  ,l_ent_period_start_date(i) period_start_date
		  ,'00:00' period_start_time
            ,l_one_done_rsln(i) one_rsln_in_period
		  ,l_two_done_rsln(i) two_rsln_in_period
		  ,l_three_done_rsln(i) three_rsln_in_period
		  ,l_four_done_rsln(i) four_rsln_in_period
		  ,l_intr_thread(i) interaction_threads_in_period
	     FROM DUAL
		UNION ALL
		SELECT
		   l_agent_id(i) agent_id
		  ,l_email_account_id(i) email_account_id
		  ,l_classification_id(i) email_classification_id
		  ,l_party_id(i) party_id
		  ,l_ent_qtr_id(i) time_id
		  ,64  period_type_id
		  ,l_ent_qtr_start_date(i) period_start_date
		  ,'00:00' period_start_time
            ,l_one_done_rsln(i) one_rsln_in_period
		  ,l_two_done_rsln(i) two_rsln_in_period
		  ,l_three_done_rsln(i) three_rsln_in_period
		  ,l_four_done_rsln(i) four_rsln_in_period
		  ,l_intr_thread(i) interaction_threads_in_period
	     FROM DUAL
		UNION ALL
		SELECT
		   l_agent_id(i) agent_id
		  ,l_email_account_id(i) email_account_id
		  ,l_classification_id(i) email_classification_id
		  ,l_party_id(i) party_id
		  ,l_ent_year_id(i) time_id
		  ,128  period_type_id
		  ,l_ent_year_start_date(i) period_start_date
		  ,'00:00' period_start_time
            ,l_one_done_rsln(i) one_rsln_in_period
		  ,l_two_done_rsln(i) two_rsln_in_period
		  ,l_three_done_rsln(i) three_rsln_in_period
		  ,l_four_done_rsln(i) four_rsln_in_period
		  ,l_intr_thread(i) interaction_threads_in_period
	     FROM DUAL) change
      ON (
         bed.agent_id = change.agent_id
         AND bed.party_id = change.party_id
         AND bed.email_account_id = change.email_account_id
         AND bed.email_classification_id = change.email_classification_id
         AND bed.time_id = change.time_id
         AND bed.period_start_time = change.period_start_time
         AND bed.period_start_date = change.period_start_date
         AND bed.period_type_id = change.period_type_id
         AND bed.outcome_id = -1 AND bed.result_id = -1 AND bed.reason_id = -1
         )
	 WHEN MATCHED THEN
      UPDATE
      SET    bed.one_rsln_in_period = decode(change.one_rsln_in_period, 0, bed.one_rsln_in_period,
                                     decode(nvl(bed.one_rsln_in_period, 0) + change.one_rsln_in_period, 0, to_number(null),
                                        nvl(bed.one_rsln_in_period, 0) + change.one_rsln_in_period))
             ,bed.two_rsln_in_period = decode(change.two_rsln_in_period, 0, bed.two_rsln_in_period,
                                     decode(nvl(bed.two_rsln_in_period, 0) + change.two_rsln_in_period, 0, to_number(null),
                                        nvl(bed.two_rsln_in_period, 0) + change.two_rsln_in_period))
             ,bed.three_rsln_in_period = decode(change.three_rsln_in_period, 0, bed.three_rsln_in_period,
                                     decode(nvl(bed.three_rsln_in_period, 0) + change.three_rsln_in_period, 0, to_number(null),
                                        nvl(bed.three_rsln_in_period, 0) + change.three_rsln_in_period))
             ,bed.four_rsln_in_period = decode(change.four_rsln_in_period, 0, bed.four_rsln_in_period,
                                     decode(nvl(bed.four_rsln_in_period, 0) + change.four_rsln_in_period, 0, to_number(null),
                                        nvl(bed.four_rsln_in_period, 0) + change.four_rsln_in_period))
             ,bed.interaction_threads_in_period = decode(change.interaction_threads_in_period, 0,
		                        bed.interaction_threads_in_period, decode(nvl(bed.interaction_threads_in_period, 0)
						    + change.interaction_threads_in_period, 0, to_number(null),
                                  nvl(bed.interaction_threads_in_period, 0) + change.interaction_threads_in_period))
             ,bed.last_updated_by = g_user_id
             ,bed.last_update_date = g_sysdate
	 WHEN NOT MATCHED THEN INSERT (
	        bed.agent_id
		   ,bed.party_id
		   ,bed.email_account_id
		   ,bed.email_classification_id
		   ,bed.time_id
		   ,bed.period_start_time
		   ,bed.period_start_date
		   ,bed.period_type_id
		   ,outcome_id
               ,result_id
               ,reason_id
		   ,bed.created_by
		   ,bed.creation_date
		   ,bed.last_updated_by
		   ,bed.last_update_date
		   ,bed.one_rsln_in_period
		   ,bed.two_rsln_in_period
		   ,bed.three_rsln_in_period
		   ,bed.four_rsln_in_period
		   ,bed.interaction_threads_in_period )
	 VALUES (
	        change.agent_id
		   ,change.party_id
		   ,change.email_account_id
		   ,change.email_classification_id
		   ,change.time_id
		   ,change.period_start_time
		   ,change.period_start_date
		   ,change.period_type_id
               ,-1
               ,-1
               ,-1
             ,g_user_id
             ,g_sysdate
             ,g_user_id
             ,g_sysdate
		   ,decode(change.one_rsln_in_period, 0, to_number(null), change.one_rsln_in_period)
		   ,decode(change.two_rsln_in_period, 0, to_number(null), change.two_rsln_in_period)
		   ,decode(change.three_rsln_in_period, 0, to_number(null), change.three_rsln_in_period)
		   ,decode(change.four_rsln_in_period, 0, to_number(null), change.four_rsln_in_period)
		   ,decode(change.interaction_threads_in_period, 0, to_number(null), change.interaction_threads_in_period));
Line: 877

      write_log('Total rows inserted/updated in bix_email_details_f for resolution : ' ||
      to_char(l_root_interaction_id.COUNT * 6));
Line: 881

      /* Update the bix_interactions_temp table to keep track of depth by interaction */
      /* This table has an instead of insert trigger which updates/insert the row     */
      FORALL i IN l_root_interaction_id.FIRST .. l_root_interaction_id.LAST
        MERGE INTO bix_interactions_temp bit
        USING (
          SELECT
            l_root_interaction_id(i) interaction_id,
            l_curr_depth(i) depth
          FROM dual ) change
        ON (bit.interaction_id = change.interaction_id)
        WHEN MATCHED THEN
        UPDATE
          SET  bit.depth = change.depth,
               bit.last_updated_by = g_user_id,
               bit.last_update_date = g_sysdate
        WHEN NOT MATCHED THEN
        INSERT (
          bit.interaction_id,
          bit.created_by,
          bit.creation_date,
          bit.last_updated_by,
          bit.last_update_date,
          bit.depth,
          bit.request_id,
          bit.program_application_id,
          bit.program_id,
          bit.program_update_date )
        VALUES (
          l_root_interaction_id(i),
          g_user_id,
          g_sysdate,
          g_user_id,
          g_sysdate,
          l_curr_depth(i),
          g_request_id,
          g_program_appl_id,
          g_program_id,
          g_sysdate);
Line: 920

      write_log('Total rows inserted/updated in bix_interactions_temp : ' || to_char(l_root_interaction_id.COUNT));
Line: 965

  l_total_rows_deleted NUMBER := 0;
Line: 966

  l_rows_deleted       NUMBER := 0;
Line: 974

  l_total_rows_deleted := 0;
Line: 976

  write_log('Deleting data from summary tables inserted from parallel workers');
Line: 977

  /* Delete all the rows inserted from subworkers */
  IF (g_worker.COUNT > 0) THEN
    FOR i IN g_worker.FIRST .. g_worker.LAST
    LOOP
      LOOP
        DELETE bix_email_details_f
        WHERE  request_id = g_worker(i)
        AND    rownum <= g_commit_chunk_size ;
Line: 986

        l_rows_deleted := SQL%ROWCOUNT;
Line: 987

        l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
Line: 991

        IF (l_rows_deleted < g_commit_chunk_size) THEN
          EXIT;
Line: 998

  /* Delete the rows from eMail summary table inserted in the current run */
  write_log('Deleting data from summary tables inserted through this main program');
Line: 1001

    DELETE bix_email_details_f
    WHERE  request_id = g_request_id
    AND    rownum <= g_commit_chunk_size ;
Line: 1005

    l_rows_deleted := SQL%ROWCOUNT;
Line: 1006

    l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
Line: 1010

    IF (l_rows_deleted < g_commit_chunk_size) THEN
      EXIT;
Line: 1017

    DELETE bix_interactions_temp
    WHERE  request_id = g_request_id
    AND    rownum <= g_commit_chunk_size ;
Line: 1021

    l_rows_deleted := SQL%ROWCOUNT;
Line: 1022

    l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
Line: 1026

    IF (l_rows_deleted < g_commit_chunk_size) THEN
      EXIT;
Line: 1031

  write_log('Total number of rows deleted : ' || to_char(l_total_rows_deleted));
Line: 1079

  SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      0  emails_offered_in_period,
      decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
        emails_fetched_in_period,
      decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
        emails_replied_in_period,
      decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
        emails_rpld_by_goal_in_period,
      decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
        AGENT_EMAILS_RPLD_BY_GOAL,
      decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
        emails_deleted_in_period,
      decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
        emails_trnsfrd_out_in_period,
      decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
        emails_trnsfrd_in_in_period,
      decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
        emails_assigned_in_period,
      decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
        emails_auto_routed_in_period,
      decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
        emails_auto_uptd_sr_in_period,
      decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
        email_resp_time_in_period,
      decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
        agent_resp_time_in_period,
       0   sr_created_in_period,
       0   emails_rsl_and_trfd_in_period,
      decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
        EMAILS_AUTO_DELETED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
     0    emails_composed_in_period,
     0   emails_orr_count_in_period,
     0   accumulated_open_emails,
     0   accumulated_emails_in_queue,
     0   accumulated_emails_one_day,
     0   accumulated_emails_three_days,
     0   accumulated_emails_week,
     0   accumulated_emails_week_plus,
     0   LEADS_CREATED_IN_PERIOD,
      decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (
 /* Query 1 */
 SELECT
      EMAIL_ACCOUNT_ID,
      EMAIL_CLASSIFICATION_ID,
      AGENT_ID,
      PARTY_ID,
      PERIOD_START_DATE,
      TIME_ID,
      '00:00'                                              PERIOD_START_TIME,
      -1                                                   OUTCOME_ID,
      -1                                                   RESULT_ID,
      -1                                                   REASON_ID,
      0                                                      EMAILS_OFFERED_IN_PERIOD,
      sum(EMAILS_FETCHED_IN_PERIOD)    EMAILS_FETCHED_IN_PERIOD,
      sum(EMAILS_REPLIED_IN_PERIOD)     EMAILS_REPLIED_IN_PERIOD,
      sum(AGENT_RESP_TIME_IN_PERIOD)  AGENT_RESP_TIME_IN_PERIOD,
      sum(EMAILS_RPLD_BY_GOAL_IN_PERIOD)                                             EMAILS_RPLD_BY_GOAL_IN_PERIOD,
     sum(AGENT_EMAILS_RPLD_BY_GOAL)                                          AGENT_EMAILS_RPLD_BY_GOAL,
      sum(EMAILS_TRNSFRD_OUT_IN_PERIOD)   EMAILS_TRNSFRD_OUT_IN_PERIOD,
      sum(EMAILS_TRNSFRD_IN_IN_PERIOD)   EMAILS_TRNSFRD_IN_IN_PERIOD,
      sum(EMAILS_ASSIGNED_IN_PERIOD)   EMAILS_ASSIGNED_IN_PERIOD,
      sum(EMAILS_AUTO_ROUTED_IN_PERIOD)   EMAILS_AUTO_ROUTED_IN_PERIOD,
      sum(EMAILS_AUTO_UPTD_SR_IN_PERIOD)   EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      sum(EMAILS_DELETED_IN_PERIOD)   EMAILS_DELETED_IN_PERIOD,
      sum(EMAIL_RESP_TIME_IN_PERIOD)   EMAIL_RESP_TIME_IN_PERIOD,
      0                                                    SR_CREATED_IN_PERIOD,
      0                                                    EMAILS_RSL_AND_TRFD_IN_PERIOD,
      sum(EMAILS_AUTO_REPLIED_IN_PERIOD)    EMAILS_AUTO_REPLIED_IN_PERIOD,
      sum(EMAILS_AUTO_DELETED_IN_PERIOD)  EMAILS_AUTO_DELETED_IN_PERIOD,
      sum(EMAILS_AUTO_RESOLVED_IN_PERIOD)      EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                                    emails_composed_in_period,
      0                                                    emails_orr_count_in_period,
      0                                                    accumulated_open_emails,
      0                                                    accumulated_emails_in_queue,
      0                                                    accumulated_emails_one_day,
      0                                                    accumulated_emails_three_days,
      0                                                    accumulated_emails_week,
      0                                                    accumulated_emails_week_plus,
      sum(EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
      0                                                    LEADS_CREATED_IN_PERIOD
    FROM
	(
SELECT /*+ index (mseg jtf_ih_media_item_lc_segs_n3) use_nl(mseg mitm) */
      nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(mseg.resource_id, -1)                            AGENT_ID,
      nvl((  SELECT
          distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
         FROM
           jtf_ih_activities actv,
           jtf_ih_interactions intr
         WHERE
         mitm.media_id = actv.media_id
        AND actv.interaction_id = intr.interaction_id
		), -1)                               PARTY_ID,
      trunc(mseg.start_date_time)                          PERIOD_START_DATE,
      to_number(to_char(mseg.start_date_time, 'J'))        TIME_ID,
      decode(mtyp.milcs_code,'EMAIL_FETCH',1)         EMAILS_FETCHED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REPLY',1)         EMAILS_REPLIED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REPLY', (mseg.start_date_time -
	  (
	  SELECT MAX(mseg2.start_date_time) start_date_time
         FROM
           jtf_ih_media_item_lc_segs mseg2,
           jtf_ih_media_itm_lc_seg_tys mtyp2
         WHERE  mseg.media_id      = mseg2.media_id
         AND   mseg2.milcs_type_id = mtyp2.milcs_type_id
         AND   mtyp2.milcs_code    IN  ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGN_OPEN', 'EMAIL_AUTO_ROUTED', 'EMAIL_ASSIGNED')
	  ) ) * 24 * 60 * 60)  AGENT_RESP_TIME_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REPLY',
               decode(sign(l_email_service_level  - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1)
                                , 'EMAIL_AUTO_REPLY',
               decode(sign(l_email_service_level  - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1) )
                                                           EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REPLY',
               decode(sign(l_email_service_level  - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1)
                       )                                          AGENT_EMAILS_RPLD_BY_GOAL,
      decode(mtyp.milcs_code,'EMAIL_TRANSFERRED',1,'EMAIL_ESCALATED',1)   EMAILS_TRNSFRD_OUT_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_TRANSFER',1)     EMAILS_TRNSFRD_IN_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_ASSIGNED',1)      EMAILS_ASSIGNED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_AUTO_ROUTED',1)   EMAILS_AUTO_ROUTED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_AUTO_UPDATED_SR',1)
                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_DELETED',1)       EMAILS_DELETED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REPLY', (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60,
                          'EMAIL_AUTO_REPLY',(mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60) EMAIL_RESP_TIME_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_AUTO_REPLY',1)    EMAILS_AUTO_REPLIED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_AUTO_DELETED',1)  EMAILS_AUTO_DELETED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_RESOLVED',1)      EMAILS_AUTO_RESOLVED_IN_PERIOD,
      decode(mtyp.milcs_code,'EMAIL_REROUTED_DIFF_CLASS',1,'EMAIL_REROUTED_DIFF_ACCT',1,'EMAIL_REQUEUED',1) EMAILS_REROUTED_IN_PERIOD
    FROM
      JTF_IH_MEDIA_ITEMS mitm,
      JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
      JTF_IH_MEDIA_ITM_LC_SEG_TYS mtyp,
	  (
		select name, max(route_classification_id) route_classification_id
	    from iem_route_classifications
		group by name
	  ) irc
    WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
    AND   mitm.classification  = irc.name(+)
    AND   mitm.direction       = 'INBOUND'
    AND   mitm.MEDIA_ID        = mseg.MEDIA_ID
    AND   mseg.MILCS_TYPE_ID   = mtyp.MILCS_TYPE_ID
    AND   mseg.START_DATE_TIME BETWEEN  g_collect_start_date and g_collect_end_date
	)
    GROUP BY
	 EMAIL_ACCOUNT_ID,
      EMAIL_CLASSIFICATION_ID,
      AGENT_ID,
      PARTY_ID,
      PERIOD_START_DATE,
      TIME_ID
      ) inv2
      GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
      )  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 1458

  write_log('Number of rows updated in table bix_email_details_stg for Emails Fetched and Replied  ' || to_char(SQL%ROWCOUNT));
Line: 1464

	  (SELECT
	      inv2.email_account_id
		email_account_id,
	      inv2.email_classification_id
		email_classification_id,
	      inv2.agent_id
		agent_id,
	      inv2.party_id
		party_id,
	      inv2.time_id
		time_id,
	      1 period_type_id,
	      inv2.period_start_date
		period_start_date,
	      inv2.period_start_time
		period_start_time,
	      inv2.outcome_id
		outcome_id,
	      inv2.result_id
		result_id,
	      inv2.reason_id
		reason_id,
	      g_user_id
		created_by,
	      g_sysdate
		creation_date,
	      g_user_id
		last_updated_by,
	      g_sysdate
		last_update_date,
	      decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period)) emails_offered_in_period,
		0  emails_fetched_in_period,
		0  emails_replied_in_period,
		0  emails_rpld_by_goal_in_period,
		0  AGENT_EMAILS_RPLD_BY_GOAL,
		0  emails_deleted_in_period,
		0  emails_trnsfrd_out_in_period,
		0  emails_trnsfrd_in_in_period,
		0  emails_assigned_in_period,
		0  emails_auto_routed_in_period,
		0  emails_auto_uptd_sr_in_period,
		0  email_resp_time_in_period,
		0  agent_resp_time_in_period,
		0  sr_created_in_period,
		0  emails_rsl_and_trfd_in_period,
		0  EMAILS_AUTO_REPLIED_IN_PERIOD,
		0  EMAILS_AUTO_DELETED_IN_PERIOD,
		0  EMAILS_AUTO_RESOLVED_IN_PERIOD,
		0  emails_composed_in_period,
		0  emails_orr_count_in_period,
		0  accumulated_open_emails,
		0  accumulated_emails_in_queue,
		0  accumulated_emails_one_day,
		0  accumulated_emails_three_days,
		0  accumulated_emails_week,
		0  accumulated_emails_week_plus,
		0  LEADS_CREATED_IN_PERIOD,
		0  EMAILS_REROUTED_IN_PERIOD,
	      g_request_id
		request_id,
	      g_program_appl_id
		program_application_id,
	      g_program_id
		program_id,
	      g_sysdate
		program_update_date
	   FROM
	    (
	/*Query 2*/
		SELECT
	     EMAIL_ACCOUNT_ID,
	      EMAIL_CLASSIFICATION_ID,
	      -1 AGENT_ID,
	      PARTY_ID,
	      PERIOD_START_DATE,
	      TIME_ID,
	       '00:00'                                              PERIOD_START_TIME,
	      -1                                                   OUTCOME_ID,
	      -1                                                   RESULT_ID,
	      -1                                                   REASON_ID,
	      COUNT(*)                                             EMAILS_OFFERED_IN_PERIOD,
	      0                                                    EMAILS_FETCHED_IN_PERIOD,
	      0                                                    EMAILS_REPLIED_IN_PERIOD,
	      0                                                    AGENT_RESP_TIME_IN_PERIOD,
	      0                                                    EMAILS_RPLD_BY_GOAL_IN_PERIOD,
	      0                                                    AGENT_EMAILS_RPLD_BY_GOAL,
	      0                                                    EMAILS_TRNSFRD_OUT_IN_PERIOD,
	      0                                                    EMAILS_TRNSFRD_IN_IN_PERIOD,
	      0                                                    EMAILS_ASSIGNED_IN_PERIOD,
	      0                                                    EMAILS_AUTO_ROUTED_IN_PERIOD,
	      0                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
	      0                                                    EMAILS_DELETED_IN_PERIOD,
	      0                                                    EMAIL_RESP_TIME_IN_PERIOD,
	      0                                                    SR_CREATED_IN_PERIOD,
	      0                                                    EMAILS_RSL_AND_TRFD_IN_PERIOD,
	      0                                                    EMAILS_AUTO_REPLIED_IN_PERIOD,
	      0                                                    EMAILS_AUTO_DELETED_IN_PERIOD,
	      0                                                    EMAILS_AUTO_RESOLVED_IN_PERIOD,
	      0                                                    emails_composed_in_period,
	      0                                                    emails_orr_count_in_period,
	      0                                                    accumulated_open_emails,
	      0                                                    accumulated_emails_in_queue,
	      0                                                    accumulated_emails_one_day,
	      0                                                    accumulated_emails_three_days,
	      0                                                    accumulated_emails_week,
	      0                                                    accumulated_emails_week_plus,
		 0                                                    EMAILS_REROUTED_IN_PERIOD,
		 0                                                    LEADS_CREATED_IN_PERIOD
	    FROM
	 (
		SELECT
	      nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
	      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
	      -1                                                   AGENT_ID,
		  nvl((  SELECT
		  distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
		 FROM
		   jtf_ih_activities actv,
		   jtf_ih_interactions intr
		 WHERE
		 mitm.media_id = actv.media_id
		AND actv.interaction_id = intr.interaction_id
			), -1)                              PARTY_ID,
	      trunc(mitm.start_date_time)                          PERIOD_START_DATE,
	      to_number(to_char(mitm.start_date_time, 'J'))        TIME_ID
	       FROM
	      JTF_IH_MEDIA_ITEMS mitm,
	     (
	    select name, max(route_classification_id) route_classification_id
	    from iem_route_classifications
	    group by name
	    ) irc
	    WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
	    AND   mitm.DIRECTION       = 'INBOUND'
	    AND   mitm.classification  = irc.name(+)
	    AND   mitm.START_DATE_TIME BETWEEN  g_collect_start_date and g_collect_end_date
		)
	    GROUP BY
		 EMAIL_ACCOUNT_ID,
	      EMAIL_CLASSIFICATION_ID,
	      AGENT_ID,
	      PARTY_ID,
	      PERIOD_START_DATE,
	      TIME_ID
	      ) inv2
	      GROUP BY
	      inv2.email_account_id,
	      inv2.email_classification_id,
	      inv2.agent_id,
	      inv2.party_id,
	      inv2.time_id,
	      inv2.period_start_date,
	      inv2.period_start_time,
	      inv2.outcome_id,
	      inv2.result_id,
	      inv2.reason_id
	      )  change
	  ON (
	      fact.email_account_id = change.email_account_id
	      AND fact.email_classification_id = change.email_classification_id
	      AND fact.agent_id = change.agent_id
	      AND fact.party_id = change.party_id
	      AND fact.time_id = change.time_id
	      AND fact.period_type_id = change.period_type_id
	      AND fact.period_start_date = change.period_start_date
	      AND fact.period_start_time = change.period_start_time
	      AND fact.outcome_id = change.outcome_id
	      AND fact.result_id = change.result_id
	      AND fact.reason_id = change.reason_id )
	  WHEN MATCHED THEN
	    UPDATE
	      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
		     0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
	      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
		     0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
	      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
		     0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
	      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
		     0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
	      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
			   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
	      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
		     nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
	      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
		     0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
	      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
		     0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
	      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
		     0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
	      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
		     0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
	      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
		     0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
	      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
		     0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
	      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
		     0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
	      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
		     0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
	      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
		     0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
	      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
		     0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
	      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
		     0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
	      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
		     0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
	      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
		     0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
	      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
		     0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
	--
	--Note that accumulated measures are not added together - they are replaced by the new
	--calculated value as they are not additive.
	--
	      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
	      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
	      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
	      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
	      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
	      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
	      ,fact.last_updated_by = change.last_updated_by
	      ,fact.last_update_date = change.last_update_date
	      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
		     0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
	      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
		     0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
	  WHEN NOT MATCHED THEN
	    INSERT (
	      fact.email_account_id,
	      fact.email_classification_id,
	      fact.agent_id,
	      fact.party_id,
	      fact.time_id,
	      fact.period_type_id,
	      fact.period_start_date,
	      fact.period_start_time,
	      fact.outcome_id,
	      fact.result_id,
	      fact.reason_id,
	      fact.created_by,
	      fact.creation_date,
	      fact.last_updated_by,
	      fact.last_update_date,
	      fact.emails_offered_in_period,
	      fact.emails_fetched_in_period,
	      fact.emails_replied_in_period,
	      fact.emails_rpld_by_goal_in_period,
	      fact.AGENT_EMAILS_RPLD_BY_GOAL,
	      fact.emails_deleted_in_period,
	      fact.emails_trnsfrd_out_in_period,
	      fact.emails_trnsfrd_in_in_period,
	      fact.emails_assigned_in_period,
	      fact.emails_auto_routed_in_period,
	      fact.emails_auto_uptd_sr_in_period,
	      fact.email_resp_time_in_period,
	      fact.agent_resp_time_in_period,
	      fact.sr_created_in_period,
	      fact.emails_rsl_and_trfd_in_period,
	      fact.emails_orr_count_in_period,
	      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
	      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
	      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
	      fact.emails_composed_in_period,
	      fact.accumulated_open_emails,
	      fact.accumulated_emails_in_queue,
	      fact.accumulated_emails_one_day,
	      fact.accumulated_emails_three_days,
	      fact.accumulated_emails_week,
	      fact.accumulated_emails_week_plus,
	      fact.request_id,
	      fact.program_application_id,
	      fact.program_id,
	      fact.program_update_date,
	      fact.emails_rerouted_in_period,
	      fact.leads_created_in_period )
	    VALUES (
	      change.email_account_id,
	      change.email_classification_id,
	      change.agent_id,
	      change.party_id,
	      change.time_id,
	      change.period_type_id,
	      change.period_start_date,
	      change.period_start_time,
	      change.outcome_id,
	      change.result_id,
	      change.reason_id,
	      change.created_by,
	      change.creation_date,
	      change.last_updated_by,
	      change.last_update_date,
	      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
	      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
	      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
	      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
	      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
	      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
	      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
	      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
	      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
	      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
	      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
	      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
	      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
	      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
	      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
	      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
	      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
	      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
	      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
	      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
	      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
	      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
	      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
	      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
	      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
	      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
	      change.request_id,
	      change.program_application_id,
	      change.program_id,
	      change.program_update_date,
	      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
	      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
	      );
Line: 1791

write_log('Number of rows updated in table bix_email_details_stg for Emails Offered  ' || to_char(SQL%ROWCOUNT));
Line: 1796

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      0
        emails_offered_in_period,
      0
        emails_fetched_in_period,
      0
      emails_replied_in_period,
      0
        emails_rpld_by_goal_in_period,
      0
        AGENT_EMAILS_RPLD_BY_GOAL,
      0
        emails_deleted_in_period,
      0
        emails_trnsfrd_out_in_period,
      0
        emails_trnsfrd_in_in_period,
      0
        emails_assigned_in_period,
      0
        emails_auto_routed_in_period,
      0
        emails_auto_uptd_sr_in_period,
      0
        email_resp_time_in_period,
       0
        agent_resp_time_in_period,
      decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
        sr_created_in_period,
      0
        emails_rsl_and_trfd_in_period,
      0
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      0
        EMAILS_AUTO_DELETED_IN_PERIOD,
      0
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0
        emails_composed_in_period,
      0
        emails_orr_count_in_period,
      0
        accumulated_open_emails,
      0
        accumulated_emails_in_queue,
      0
        accumulated_emails_one_day,
      0
        accumulated_emails_three_days,
      0
        accumulated_emails_week,
      0
        accumulated_emails_week_plus,
      decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
       LEADS_CREATED_IN_PERIOD,
      0  EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (
	/* Query 3 */
	   SELECT /*+ index(actv jtf_ih_activities_n11) */
      nvl(email_account_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(email_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(agent_id, -1)                            AGENT_ID,
      nvl(party_id, -1)                               PARTY_ID,
      trunc(period_start_date)                          PERIOD_START_DATE,
      time_id        TIME_ID,
      '00:00'                                              PERIOD_START_TIME,
      -1                                                   OUTCOME_ID,
      -1                                                   RESULT_ID,
      -1                                                   REASON_ID,
      0                                                    EMAILS_OFFERED_IN_PERIOD,
      0                                                    EMAILS_FETCHED_IN_PERIOD,
      0                                                    EMAILS_REPLIED_IN_PERIOD,
      0                                                    AGENT_RESP_TIME_IN_PERIOD,
      0                                                    EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                                    AGENT_EMAILS_RPLD_BY_GOAL,
      0                                                    EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                                    EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                                    EMAILS_ASSIGNED_IN_PERIOD,
      0                                                    EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                                    EMAILS_DELETED_IN_PERIOD,
      0                                                    EMAIL_RESP_TIME_IN_PERIOD,
      SUM(DECODE(action_id,13,1))                     SR_CREATED_IN_PERIOD,
      0                                                    EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                                    EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                                    EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                                    EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                                    emails_composed_in_period,
      0                                                    emails_orr_count_in_period,
      0                                                    accumulated_open_emails,
      0                                                    accumulated_emails_in_queue,
      0                                                    accumulated_emails_one_day,
      0                                                    accumulated_emails_three_days,
      0                                                    accumulated_emails_week,
	        0                                                    accumulated_emails_week_plus,
         0                                                    EMAILS_REROUTED_IN_PERIOD,
         SUM(DECODE(action_id,71,1))                      LEADS_CREATED_IN_PERIOD
	FROM
	(
	SELECT
  nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(intr.resource_id, -1)                            AGENT_ID,
      first_value(party_id) over(partition by actv.media_id order by actv.interaction_id DESC) PARTY_ID,
      trunc(actv.start_date_time)                          PERIOD_START_DATE,
      to_number(to_char(actv.start_date_time, 'J'))        TIME_ID,
      actv.action_id                     ACTION_ID
    FROM
      JTF_IH_ACTIVITIES actv,
      JTF_IH_INTERACTIONS intr,
      JTF_IH_MEDIA_ITEMS mitm,
      (select /*+ index(actv jtf_ih_activities_n11) use_nl(actv actv1 mitm) */
         actv.interaction_id interaction_id,
         max(mitm.classification) classification
       from
         jtf_ih_activities actv,
         jtf_ih_media_items mitm
       where
	  actv.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
      and   actv.media_id = mitm.media_id
      and   mitm.direction = 'INBOUND'
      and   mitm.media_item_type = 'EMAIL'
       group by actv.interaction_id ) inv2,
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) irc
    WHERE
    actv.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
    AND ( ( actv.action_id = 13 AND  actv.action_item_id = 17 ) OR
          ( actv.action_id = 71  AND  actv.action_item_id = 8  )
        )
    AND   actv.media_id = mitm.media_id
    AND   mitm.MEDIA_ITEM_TYPE = 'EMAIL'
    AND   inv2.classification  = irc.name(+)
    AND   actv.interaction_id = intr.interaction_id
    AND   actv.interaction_id = inv2.interaction_id(+)
	)
    GROUP BY
      nvl(email_account_id, -1),
      nvl(email_classification_id, -1),
      agent_id,
      nvl(party_id, -1),
	      trunc(period_start_date),
      time_id
)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 2165

write_log('Number of rows updated in table bix_email_details_stg for SR and leads created ' || to_char(SQL%ROWCOUNT));
Line: 2170

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      0
        emails_offered_in_period,
      0
        emails_fetched_in_period,
      0
        emails_replied_in_period,
      0
        emails_rpld_by_goal_in_period,
      0
        AGENT_EMAILS_RPLD_BY_GOAL,
      0
        emails_deleted_in_period,
      0
        emails_trnsfrd_out_in_period,
      0
        emails_trnsfrd_in_in_period,
      0
        emails_assigned_in_period,
      0
        emails_auto_routed_in_period,
      0
        emails_auto_uptd_sr_in_period,
      0
        email_resp_time_in_period,
      0
        agent_resp_time_in_period,
      0
        sr_created_in_period,
      decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
        emails_rsl_and_trfd_in_period,
      0
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      0
        EMAILS_AUTO_DELETED_IN_PERIOD,
      0
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0
        emails_composed_in_period,
      0
        emails_orr_count_in_period,
      0
        accumulated_open_emails,
      0
        accumulated_emails_in_queue,
      0
        accumulated_emails_one_day,
      0
        accumulated_emails_three_days,
      0
        accumulated_emails_week,
      0
        accumulated_emails_week_plus,
      0
       LEADS_CREATED_IN_PERIOD,
      0
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (

	/* Query 4 */
SELECT
   EMAIL_ACCOUNT_ID,
      EMAIL_CLASSIFICATION_ID,
      AGENT_ID,
      PARTY_ID,
      PERIOD_START_DATE,
      TIME_ID,
      '00:00'                                              PERIOD_START_TIME,
      -1                                                   OUTCOME_ID,
      -1                                                   RESULT_ID,
      -1                                                   REASON_ID,
      0                                                    EMAILS_OFFERED_IN_PERIOD,
      0                                                    EMAILS_FETCHED_IN_PERIOD,
      0                                                    EMAILS_REPLIED_IN_PERIOD,
      0                                                    AGENT_RESP_TIME_IN_PERIOD,
      0                                                    EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                                    AGENT_EMAILS_RPLD_BY_GOAL,
      0                                                    EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                                    EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                                    EMAILS_ASSIGNED_IN_PERIOD,
      0                                                    EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                                    EMAILS_DELETED_IN_PERIOD,
      0                                                    EMAIL_RESP_TIME_IN_PERIOD,
      0                                                    SR_CREATED_IN_PERIOD,
      count(*)                                             EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                                    EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                                    EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                                    EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                                    emails_composed_in_period,
      0                                                    emails_orr_count_in_period,
      0                                                    accumulated_open_emails,
      0                                                    accumulated_emails_in_queue,
      0                                                    accumulated_emails_one_day,
      0                                                    accumulated_emails_three_days,
      0                                                    accumulated_emails_week,
      0                                                    accumulated_emails_week_plus,
	 0                                                    EMAILS_REROUTED_IN_PERIOD,
	 0                                                    LEADS_CREATED_IN_PERIOD
	 FROM
(SELECT /*+ index (mseg jtf_ih_media_item_lc_segs_n3) use_nl(mseg mitm) */
      nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(mseg.resource_id, -1)                            AGENT_ID,
	nvl((  SELECT
          distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
         FROM
           jtf_ih_activities actv,
           jtf_ih_interactions intr
         WHERE
         mitm.media_id = actv.media_id
        AND actv.interaction_id = intr.interaction_id
	), -1)                                     PARTY_ID,
      trunc(mseg.start_date_time)                          PERIOD_START_DATE,
      to_number(to_char(mseg.start_date_time, 'J'))        TIME_ID
     FROM
       JTF_IH_MEDIA_ITEMS mitm,
      JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
      JTF_IH_MEDIA_ITM_LC_SEG_TYS mtyp,
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) irc
    WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
    AND   mitm.DIRECTION       = 'INBOUND'
    AND   mitm.classification  = irc.name(+)
    AND   mitm.MEDIA_ID        = mseg.MEDIA_ID
    AND   mseg.MILCS_TYPE_ID   = mtyp.MILCS_TYPE_ID
    AND   mtyp.MILCS_CODE      IN ('EMAIL_REPLY', 'EMAIL_DELETED')
    AND   mseg.START_DATE_TIME BETWEEN  g_collect_start_date and g_collect_end_date
    AND   EXISTS (
            SELECT
                   1
            FROM
                   jtf_ih_media_item_lc_segs mseg1,
                   jtf_ih_media_itm_lc_seg_tys mtys1
            WHERE mseg1.media_id = mitm.media_id
            AND   mtys1.milcs_type_id = mseg1.milcs_type_id
            AND   mtys1.milcs_code IN ( 'EMAIL_TRANSFERRED','EMAIL_ESCALATED') )
	    )
  GROUP BY
	 EMAIL_ACCOUNT_ID,
      EMAIL_CLASSIFICATION_ID,
      AGENT_ID,
      PARTY_ID,
      PERIOD_START_DATE,
      TIME_ID
)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 2538

write_log('Number of rows updated in table bix_email_details_stg for Emails Resolved and Transferred in period ' || to_char(SQL%ROWCOUNT));
Line: 2546

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
   0
        emails_offered_in_period,
   0
        emails_fetched_in_period,
   0
        emails_replied_in_period,
   0
        emails_rpld_by_goal_in_period,
   0
        AGENT_EMAILS_RPLD_BY_GOAL,
   0
        emails_deleted_in_period,
   0
        emails_trnsfrd_out_in_period,
   0
        emails_trnsfrd_in_in_period,
   0
      emails_assigned_in_period,
   0
        emails_auto_routed_in_period,
   0
        emails_auto_uptd_sr_in_period,
   0
        email_resp_time_in_period,
   0
        agent_resp_time_in_period,
   0
        sr_created_in_period,
   0
        emails_rsl_and_trfd_in_period,
   0
        EMAILS_AUTO_REPLIED_IN_PERIOD,
   0
        EMAILS_AUTO_DELETED_IN_PERIOD,
   0
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
   0
        emails_composed_in_period,
      decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
        emails_orr_count_in_period,
   0
        accumulated_open_emails,
   0
        accumulated_emails_in_queue,
   0
      accumulated_emails_one_day,
   0
        accumulated_emails_three_days,
   0
      accumulated_emails_week,
   0
        accumulated_emails_week_plus,
   0
       LEADS_CREATED_IN_PERIOD,
   0
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (

/* Query 5 */
SELECT
      nvl(email_account_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(email_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(agent_id, -1)                            AGENT_ID,
      nvl(party_id, -1)                               PARTY_ID,
      trunc(period_start_date)                         PERIOD_START_DATE,
      time_id        TIME_ID,
      '00:00'                                              PERIOD_START_TIME,
      NVL(outcome_id,-1)                              OUTCOME_ID,
      NVL(result_id,-1)                               RESULT_ID,
      NVL(reason_id,-1)                               REASON_ID,
      0                                                    EMAILS_OFFERED_IN_PERIOD,
      0                                                    EMAILS_FETCHED_IN_PERIOD,
      0                                                    EMAILS_REPLIED_IN_PERIOD,
      0                                                    AGENT_RESP_TIME_IN_PERIOD,
      0                                                    EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                                    AGENT_EMAILS_RPLD_BY_GOAL,
      0                                                    EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                                    EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                                    EMAILS_ASSIGNED_IN_PERIOD,
      0                                                    EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                                    EMAILS_DELETED_IN_PERIOD,
      0                                                    EMAIL_RESP_TIME_IN_PERIOD,
      0                                                    SR_CREATED_IN_PERIOD,
      0                                                    EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                                    EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                                    EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                                    EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                                    emails_composed_in_period,
      COUNT(DISTINCT interaction_id)                  emails_orr_count_in_period,
      0                                                    accumulated_open_emails,
      0                                                    accumulated_emails_in_queue,
      0                                                    accumulated_emails_one_day,
      0                                                    accumulated_emails_three_days,
      0                                                    accumulated_emails_week,
      0                                                    accumulated_emails_week_plus,
         0                                                    EMAILS_REROUTED_IN_PERIOD,
         0                                                    LEADS_CREATED_IN_PERIOD
FROM
(
SELECT /*+ use_nl(intr,actv,mitm) */
nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(intr.resource_id, -1)                            AGENT_ID,
      nvl(first_value(intr.party_id)
          over(partition by actv.media_id
               order by actv.interaction_id desc
              ),
          -1)                                              PARTY_ID,
      trunc(intr.last_update_date)                         PERIOD_START_DATE,
      to_number(to_char(intr.last_update_date, 'J'))       TIME_ID,
      NVL(intr.outcome_id,-1)                              OUTCOME_ID,
      NVL(intr.result_id,-1)                               RESULT_ID,
      NVL(intr.reason_id,-1)                               REASON_ID,
      intr.interaction_id                                  INTERACTION_ID
     FROM
      JTF_IH_MEDIA_ITEMS mitm,
      JTF_IH_ACTIVITIES actv,
      JTF_IH_INTERACTIONS intr,
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) irc
    WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
    AND   mitm.direction = 'INBOUND'
    AND   mitm.classification  = irc.name(+)
    AND   mitm.media_id        = actv.media_id
    AND   actv.interaction_id  = intr.interaction_id
    AND   intr.LAST_UPDATE_DATE BETWEEN  g_collect_start_date and g_collect_end_date
    AND   intr.outcome_id IS NOT NULL
)
    GROUP BY
      nvl(email_account_id, -1),
      nvl(email_classification_id, -1),
      nvl(agent_id, -1),
      nvl(party_id, -1),
      trunc(period_start_date),
      time_id,
      NVL(outcome_id,-1),
      NVL(result_id,-1),
      NVL(reason_id,-1)

)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 2910

write_log('Number of rows updated in table bix_email_details_stg for Emails ORR count  ' || to_char(SQL%ROWCOUNT));
Line: 2916

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
        emails_offered_in_period,
      decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
        emails_fetched_in_period,
      decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
        emails_replied_in_period,
      decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
        emails_rpld_by_goal_in_period,
      decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
        AGENT_EMAILS_RPLD_BY_GOAL,
      decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
        emails_deleted_in_period,
      decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
        emails_trnsfrd_out_in_period,
      decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
        emails_trnsfrd_in_in_period,
      decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
        emails_assigned_in_period,
      decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
        emails_auto_routed_in_period,
      decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
        emails_auto_uptd_sr_in_period,
      decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
        email_resp_time_in_period,
      decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
        agent_resp_time_in_period,
      decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
        sr_created_in_period,
      decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
        emails_rsl_and_trfd_in_period,
      decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
        EMAILS_AUTO_DELETED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
        emails_composed_in_period,
      decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
        emails_orr_count_in_period,
      decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
        accumulated_open_emails,
      decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
        accumulated_emails_in_queue,
      decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
        accumulated_emails_one_day,
      decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
        accumulated_emails_three_days,
      decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
        accumulated_emails_week,
      decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
        accumulated_emails_week_plus,
      decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
       LEADS_CREATED_IN_PERIOD,
      decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (
	/* Query 6 */
    SELECT   /*+ use_nl(intr,actv,segs,mitm)  */
      nvl(mitm.source_id, -1)                              EMAIL_ACCOUNT_ID,
      nvl(irc.route_classification_id, -1)                 EMAIL_CLASSIFICATION_ID,
      nvl(intr.resource_id, -1)                            AGENT_ID,
      nvl(intr.party_id, -1)                               PARTY_ID,
      trunc(intr.last_update_date)                         PERIOD_START_DATE,
      to_number(to_char(intr.last_update_date, 'J'))       TIME_ID,
      '00:00'                                              PERIOD_START_TIME,
      NVL(intr.outcome_id,-1)                              OUTCOME_ID,
      NVL(intr.result_id,-1)                               RESULT_ID,
      NVL(intr.reason_id,-1)                               REASON_ID,
      0                                                    EMAILS_OFFERED_IN_PERIOD,
      0                                                    EMAILS_FETCHED_IN_PERIOD,
      0                                                    EMAILS_REPLIED_IN_PERIOD,
      0                                                    AGENT_RESP_TIME_IN_PERIOD,
      0                                                    EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                                    AGENT_EMAILS_RPLD_BY_GOAL,
      0                                                    EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                                    EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                                    EMAILS_ASSIGNED_IN_PERIOD,
      0                                                    EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                                    EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                                    EMAILS_DELETED_IN_PERIOD,
      0                                                    EMAIL_RESP_TIME_IN_PERIOD,
      0                                                    SR_CREATED_IN_PERIOD,
      0                                                    EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                                    EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                                    EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                                    EMAILS_AUTO_RESOLVED_IN_PERIOD,
      COUNT(distinct mitm.media_id)                        emails_composed_in_period,
      COUNT(DISTINCT intr.interaction_id)                  emails_orr_count_in_period,
      0                                                    accumulated_open_emails,
      0                                                    accumulated_emails_in_queue,
      0                                                    accumulated_emails_one_day,
      0                                                    accumulated_emails_three_days,
      0                                                    accumulated_emails_week,
      0                                                    accumulated_emails_week_plus,
	 0                                                    EMAILS_REROUTED_IN_PERIOD,
	 0                                                    LEADS_CREATED_IN_PERIOD
    FROM
      JTF_IH_MEDIA_ITEMS mitm,
      JTF_IH_MEDIA_ITEM_LC_SEGS segs,
      JTF_IH_MEDIA_ITM_LC_SEG_TYS seg_type,
      JTF_IH_ACTIVITIES actv,
      JTF_IH_INTERACTIONS intr,
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) irc
    WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
    AND   mitm.direction = 'OUTBOUND'
    AND   mitm.media_id = segs.media_id
    AND   segs.milcs_type_id = seg_type.milcs_type_id
    AND   seg_type.milcs_code = 'EMAIL_COMPOSE'
    AND   mitm.classification  = irc.name(+)
 --   AND   mitm.media_id        = actv.media_id
   AND   segs.media_id        = actv.media_id
    AND   actv.interaction_id  = intr.interaction_id
    AND   intr.LAST_UPDATE_DATE BETWEEN  g_collect_start_date and g_collect_end_date
    AND   intr.outcome_id IS NOT NULL
    GROUP BY
      nvl(mitm.source_id, -1),
      nvl(irc.route_classification_id, -1),
      nvl(intr.resource_id, -1),
      nvl(intr.party_id, -1),
      trunc(intr.last_update_date),
      to_number(to_char(intr.last_update_date, 'J')),
      NVL(intr.outcome_id,-1),
      NVL(intr.result_id,-1),
      NVL(intr.reason_id,-1)
)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 3269

write_log('Number of rows updated in table bix_email_details_stg for Emails composed and ORR count  ' || to_char(SQL%ROWCOUNT));
Line: 3274

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
        emails_offered_in_period,
      decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
        emails_fetched_in_period,
      decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
        emails_replied_in_period,
      decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
        emails_rpld_by_goal_in_period,
      decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
        AGENT_EMAILS_RPLD_BY_GOAL,
      decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
        emails_deleted_in_period,
      decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
        emails_trnsfrd_out_in_period,
      decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
        emails_trnsfrd_in_in_period,
      decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
        emails_assigned_in_period,
      decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
        emails_auto_routed_in_period,
      decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
        emails_auto_uptd_sr_in_period,
      decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
        email_resp_time_in_period,
      decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
        agent_resp_time_in_period,
      decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
        sr_created_in_period,
      decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
        emails_rsl_and_trfd_in_period,
      decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
        EMAILS_AUTO_DELETED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
        emails_composed_in_period,
      decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
        emails_orr_count_in_period,
      decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
        accumulated_open_emails,
      decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
        accumulated_emails_in_queue,
      decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
        accumulated_emails_one_day,
      decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
        accumulated_emails_three_days,
      decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
        accumulated_emails_week,
      decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
        accumulated_emails_week_plus,
      decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
       LEADS_CREATED_IN_PERIOD,
      decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (
/* Query 7  -Part I*/
    SELECT
      nvl(iview.email_account_id, -1)          EMAIL_ACCOUNT_ID,
      nvl(iview.email_classification_id, -1)   EMAIL_CLASSIFICATION_ID,
      nvl(iview.resource_id, -1)               AGENT_ID,
      nvl(iview.party_id, -1)                  PARTY_ID,
      trunc(ftd.start_date)                    PERIOD_START_DATE,
      to_number(to_char(ftd.start_date, 'J'))  TIME_ID,
      '00:00'                                  PERIOD_START_TIME,
      -1                                       OUTCOME_ID,
      -1                                       RESULT_ID,
      -1                                       REASON_ID,
      0                                        EMAILS_OFFERED_IN_PERIOD,
      0                                        EMAILS_FETCHED_IN_PERIOD,
      0                                        EMAILS_REPLIED_IN_PERIOD,
      0                                        AGENT_RESP_TIME_IN_PERIOD,
      0                                        EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                        AGENT_EMAILS_RPLD_BY_GOAL,
      0                                        EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                        EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                        EMAILS_ASSIGNED_IN_PERIOD,
      0                                        EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                        EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                        EMAILS_DELETED_IN_PERIOD,
      0                                        EMAIL_RESP_TIME_IN_PERIOD,
      0                                        SR_CREATED_IN_PERIOD,
      0                                        EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                        EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                        EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                        emails_composed_in_period,
      0                                        emails_orr_count_in_period,
      sum(CASE WHEN ((iview.end_date_time - ftd.start_date) > 1) THEN 1
               WHEN (((iview.end_date_time - ftd.start_date) <= 1) AND (flag = 1)) THEN 1
               ELSE 0 END)                     accumulated_open_emails,
      0                                        accumulated_emails_in_queue,
    sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time >= 0 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 1 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_one_day,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 1 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 3 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_three_days,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 3 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 7 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_week,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 7 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_week_plus,
	 0                                                    EMAILS_REROUTED_IN_PERIOD,
	 0                                                    LEADS_CREATED_IN_PERIOD
    FROM
      fii_time_day ftd,
(
/* Query 7  -Part I*/SELECT
        media_id                               MEDIA_ID,
        nvl(email_account_id, -1)              EMAIL_ACCOUNT_ID,
        nvl(email_classification_id, -1)       EMAIL_CLASSIFICATION_ID,
        nvl(resource_id,-1)                    RESOURCE_ID,
        nvl(party_id, -1)                      PARTY_ID,
        decode(sign(max(seg_start_date_time) - g_collect_start_date), 1, max(seg_start_date_time),g_collect_start_date)
                                               START_DATE_TIME,
        g_collect_end_date                     END_DATE_TIME,
	max(media_start_date_time)             MEDIA_START_DATE_TIME,
        1                                      FLAG
FROM
      (
      /* Query 7  -Part I*/
	  SELECT   /*+ ordered INDEX(MSEG JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm,act,int) */
        mitm.media_id                        MEDIA_ID,
	mseg.milcs_id                        MILCS_ID,
        nvl(mitm.source_id, -1)              EMAIL_ACCOUNT_ID,
        nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
        nvl(mseg.resource_id,-1)             RESOURCE_ID,
        first_value(int.party_id) over(partition by act.media_id order by act.interaction_id DESC) PARTY_ID,
        mseg.start_date_time                 SEG_START_DATE_TIME,
        mitm.start_date_time                 MEDIA_START_DATE_TIME
      FROM
        JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
		JTF_IH_MEDIA_ITEMS mitm,
        JTF_IH_ACTIVITIES act,
        JTF_IH_INTERACTIONS int,
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) cls
      WHERE 1=1
	  --mitm.media_item_type = 'EMAIL'
      AND   mitm.media_id = act.media_id
      AND   int.interaction_id = act.interaction_id
      AND   mitm.direction = 'INBOUND'
      AND   mitm.classification = cls.name(+)
      AND   mitm.media_id = mseg.media_id
      AND   mseg.start_date_time < g_collect_end_date
      AND   mseg.milcs_type_id in (g_fetch,g_transfer,g_a_routed,g_assigned,g_assign_open)
      AND   NOT EXISTS
       (
        SELECT  1
        FROM JTF_IH_MEDIA_ITEM_LC_SEGS mseg1
        WHERE mseg.media_id = mseg1.media_id
	 /* Commenting this join out because the supervisor can perform some of the operations below.
	 Irrespective of which user did it, the email is not open any more */
       -- AND   mseg.resource_id = mseg1.resource_id
        AND   mseg1.milcs_type_id IN (g_deleted,g_transferred,g_reply,g_assigned,g_rerouted_acct,g_rerouted_class,g_Requeued,g_escalated)
        AND   mseg1.START_DATE_TIME >= mseg.START_DATE_TIME
        AND   mseg1.start_date_time < g_collect_end_date
        AND   mseg1.milcs_id <> mseg.milcs_id
       )
)
group by media_id, nvl(email_account_id, -1), nvl(email_classification_id, -1),
        nvl(resource_id,-1), nvl(party_id, -1), milcs_id
      UNION
	  	/* Query 7  -Part II*/
--Not open any more but was open in the past - note this does not need the interactions, activities
--merged into the same query, since act.start_date_time would fall into the collect start and end buckets
SELECT
MEDIA_ID,
EMAIL_ACCOUNT_ID,
EMAIL_CLASSIFICATION_ID,
RESOURCE_ID,
PARTY_ID,
START_DATE_TIME,
min(END_DATE_TIME)             END_DATE_TIME,
MEDIA_START_DATE_TIME,
0                                    FLAG
 FROM
 (
 SELECT /*+ ordered INDEX(MSEG JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm)*/
        mitm.media_id                        MEDIA_ID,
        nvl(mitm.source_id, -1)              EMAIL_ACCOUNT_ID,
        nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
        nvl(mseg.resource_id, -1)            RESOURCE_ID,
           nvl((  SELECT
          distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
         FROM
           jtf_ih_activities actv,
           jtf_ih_interactions intr
         WHERE
         mitm.media_id = actv.media_id
        AND actv.interaction_id = intr.interaction_id
		), -1)                       PARTY_ID,
        decode(sign(mseg.start_date_time - g_collect_start_date), 1, mseg.start_date_time, g_collect_start_date)
                                             START_DATE_TIME,
        inv2.start_date_time             END_DATE_TIME,
        mitm.start_date_time                 MEDIA_START_DATE_TIME
           FROM
		      JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
		      JTF_IH_MEDIA_ITEMS mitm,
			   (
			select name, max(route_classification_id) route_classification_id
			from iem_route_classifications
			group by name
				) cls ,
				(
					SELECT  /*+  INDEX(MSEG1 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) */
							mseg1.media_id         MEDIA_ID,
							mseg1.resource_id      RESOURCE_ID,
							mseg1.start_date_time  START_DATE_TIME
					FROM    JTF_IH_MEDIA_ITEM_LC_SEGS mseg1
					WHERE   mseg1.milcs_type_id IN (g_deleted,g_transferred,g_reply,g_assigned,g_rerouted_acct,g_rerouted_class,g_Requeued,g_escalated)
					  AND     mseg1.START_DATE_TIME < g_collect_end_date
				) inv2
      WHERE  mitm.media_id=mseg.media_id
      AND    inv2.media_id = mseg.media_id
--      AND    inv2.resource_id = mseg.resource_id
	    /* Commenting this join out because the supervisor  performs some  operations like delete and requeued.
	 Irrespective of which user did it, the email was not open. Lets say Email fetched by agent a, email transferred by a,
	 email transfer to b, email requeue to c. If we remove this condition, we anyways take min (inv2.start_date_time),
	 so a will get the email transferred start date time (done by him), b will get requeue start date time (done by c) */
      --AND    mitm.media_item_type = 'EMAIL'
      AND    mitm.direction = 'INBOUND'
      AND    mitm.classification = cls.name(+)
      AND    mseg.start_date_time < g_collect_end_date
      AND    mseg.milcs_type_id in ( g_fetch,g_transfer,g_a_routed,g_assigned,g_assign_open)
      AND    inv2.START_DATE_TIME >= mseg.START_DATE_TIME

)
GROUP BY
MEDIA_ID,
EMAIL_ACCOUNT_ID,
EMAIL_CLASSIFICATION_ID,
RESOURCE_ID,
PARTY_ID,
START_DATE_TIME,
MEDIA_START_DATE_TIME

		) iview
    WHERE ftd.start_date between trunc(iview.start_date_time) AND iview.end_date_time
    GROUP BY
      iview.email_account_id
      ,iview.email_classification_id
      ,iview.resource_id
      ,iview.party_id
      ,ftd.start_date
)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 3753

write_log('Number of rows updated in table bix_email_details_stg for Emails Open  ' || to_char(SQL%ROWCOUNT));
Line: 3761

  (SELECT
      inv2.email_account_id
        email_account_id,
      inv2.email_classification_id
        email_classification_id,
      inv2.agent_id
        agent_id,
      inv2.party_id
        party_id,
      inv2.time_id
        time_id,
      1 period_type_id,
      inv2.period_start_date
        period_start_date,
      inv2.period_start_time
        period_start_time,
      inv2.outcome_id
        outcome_id,
      inv2.result_id
        result_id,
      inv2.reason_id
        reason_id,
      g_user_id
        created_by,
      g_sysdate
        creation_date,
      g_user_id
        last_updated_by,
      g_sysdate
        last_update_date,
      decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
        emails_offered_in_period,
      decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
        emails_fetched_in_period,
      decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
        emails_replied_in_period,
      decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
        emails_rpld_by_goal_in_period,
      decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
        AGENT_EMAILS_RPLD_BY_GOAL,
      decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
        emails_deleted_in_period,
      decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
        emails_trnsfrd_out_in_period,
      decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
        emails_trnsfrd_in_in_period,
      decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
        emails_assigned_in_period,
      decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
        emails_auto_routed_in_period,
      decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
        emails_auto_uptd_sr_in_period,
      decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
        email_resp_time_in_period,
      decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
        agent_resp_time_in_period,
      decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
        sr_created_in_period,
      decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
        emails_rsl_and_trfd_in_period,
      decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
        EMAILS_AUTO_REPLIED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
        EMAILS_AUTO_DELETED_IN_PERIOD,
      decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
        emails_composed_in_period,
      decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
        emails_orr_count_in_period,
      decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
        accumulated_open_emails,
      decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
        accumulated_emails_in_queue,
      decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
        accumulated_emails_one_day,
      decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
        accumulated_emails_three_days,
      decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
        accumulated_emails_week,
      decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
        accumulated_emails_week_plus,
      decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
       LEADS_CREATED_IN_PERIOD,
      decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
        EMAILS_REROUTED_IN_PERIOD,
      g_request_id
        request_id,
      g_program_appl_id
        program_application_id,
      g_program_id
        program_id,
      g_sysdate
        program_update_date
   FROM
    (

 SELECT
      nvl(iview.email_account_id, -1)          EMAIL_ACCOUNT_ID,
      nvl(iview.email_classification_id, -1)   EMAIL_CLASSIFICATION_ID,
      -1                                       AGENT_ID,
      nvl(iview.party_id, -1)                  PARTY_ID,
      trunc(ftd.start_date)                    PERIOD_START_DATE,
      to_number(to_char(ftd.start_date, 'J'))  TIME_ID,
      '00:00'                                  PERIOD_START_TIME,
	     -1                                       OUTCOME_ID,
      -1                                       RESULT_ID,
      -1                                       REASON_ID,
      0                                        EMAILS_OFFERED_IN_PERIOD,
      0                                        EMAILS_FETCHED_IN_PERIOD,
      0                                        EMAILS_REPLIED_IN_PERIOD,
      0                                        AGENT_RESP_TIME_IN_PERIOD,
      0                                        EMAILS_RPLD_BY_GOAL_IN_PERIOD,
      0                                        AGENT_EMAILS_RPLD_BY_GOAL,
      0                                        EMAILS_TRNSFRD_OUT_IN_PERIOD,
      0                                        EMAILS_TRNSFRD_IN_IN_PERIOD,
      0                                        EMAILS_ASSIGNED_IN_PERIOD,
      0                                        EMAILS_AUTO_ROUTED_IN_PERIOD,
      0                                        EMAILS_AUTO_UPTD_SR_IN_PERIOD,
      0                                        EMAILS_DELETED_IN_PERIOD,
      0                                        EMAIL_RESP_TIME_IN_PERIOD,
      0                                        SR_CREATED_IN_PERIOD,
      0                                        EMAILS_RSL_AND_TRFD_IN_PERIOD,
      0                                        EMAILS_AUTO_REPLIED_IN_PERIOD,
      0                                        EMAILS_AUTO_DELETED_IN_PERIOD,
      0                                        EMAILS_AUTO_RESOLVED_IN_PERIOD,
      0                                        emails_composed_in_period,
      0                                        emails_orr_count_in_period,
      0                                        accumulated_open_emails,
      sum(CASE WHEN ((iview.end_date_time - ftd.start_date) > 1) THEN 1
               WHEN (((iview.end_date_time - ftd.start_date) <= 1) AND (flag = 1)) THEN 1
               ELSE 0 END)                     accumulated_emails_in_queue,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time >= 0 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 1 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_one_day,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 1 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 3 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_three_days,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 3 AND
           decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 7 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_week,
      sum(CASE WHEN
          (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 7 AND
           decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
                                          accumulated_emails_week_plus,
	 0                                                    EMAILS_REROUTED_IN_PERIOD,
	 0                                                    LEADS_CREATED_IN_PERIOD
    FROM
      fii_time_day ftd,
--
--Currently in QUEUE or in QUEUE until collect end date
--
(
SELECT
         media_id                             MEDIA_ID,
         nvl(email_account_id, -1)            EMAIL_ACCOUNT_ID,
         nvl(email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
         nvl(party_id, -1)                    PARTY_ID,
         decode(sign(max(seg_start_date_time) - g_collect_start_date), 1, max(seg_start_date_time), g_collect_start_date)
                                              START_DATE_TIME,
         g_collect_end_date                   END_DATE_TIME,
         max(media_start_date_time)           MEDIA_START_DATE_TIME,
         1                                    FLAG
FROM
   (
      SELECT  /*+ ordered index(mseg JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm,act,int)*/
         mitm.media_id                        MEDIA_ID,
         mseg.milcs_id                        MILCS_ID,
         nvl(mitm.source_id, -1)              EMAIL_ACCOUNT_ID,
         nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
         first_value(int.party_id) over(partition by act.media_id order by act.interaction_id DESC) PARTY_ID,
         mseg.start_date_time                 SEG_START_DATE_TIME,
         mitm.start_date_time                 MEDIA_START_DATE_TIME
       FROM
         JTF_IH_MEDIA_ITEM_LC_SEGS   mseg,
		 JTF_IH_MEDIA_ITEMS          mitm,
         JTF_IH_ACTIVITIES act,
         JTF_IH_INTERACTIONS int,
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) cls
       WHERE
	   --mitm.MEDIA_ITEM_TYPE = 'EMAIL' /* Is this necessary? Without it the unique filter is getting used*/
	   1=1
       AND   mitm.DIRECTION       = 'INBOUND'
       AND   int.interaction_id = act.interaction_id
       AND   act.media_id         = mitm.media_id
       AND   mitm.classification  = cls.name(+)
       AND   mitm.MEDIA_ID        = mseg.MEDIA_ID
       AND   mseg.START_DATE_TIME < g_collect_end_date
       AND   mseg.MILCS_TYPE_ID   = g_processing/* Requeued removed for bug 5337716*/
       AND   NOT EXISTS
        (
         SELECT
	         1
         FROM JTF_IH_MEDIA_ITEM_LC_SEGS   mseg1
         WHERE  mseg.MEDIA_ID       = mseg1.MEDIA_ID
         AND    mseg1.MILCS_TYPE_ID in (
		 G_FETCH, G_RESOLVED, G_A_REDIRECTED, G_A_DELETED, G_A_REPLY, G_OPEN, G_A_ROUTED, G_A_UPDATED_SR,
         G_ASSIGNED, G_ASSIGN_OPEN,G_DELETED)
         AND    mseg1.START_DATE_TIME >= mseg.START_DATE_TIME
         AND    mseg1.START_DATE_TIME < g_collect_end_date
        )
   )
GROUP BY media_id, milcs_id,nvl(email_account_id, -1), nvl(email_classification_id, -1) ,nvl(party_id, -1)
       UNION
       SELECT /*+ ordered  index(mseg2 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg2,mitm2) */
         mitm2.media_id                        MEDIA_ID,
         nvl(mitm2.source_id, -1)              EMAIL_ACCOUNT_ID,
         nvl(cls2.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
         nvl(inv1.party_id, -1)                PARTY_ID,
         decode(sign(mseg2.start_date_time - g_collect_start_date), 1, mseg2.start_date_time, g_collect_start_date)
                                               START_DATE_TIME,
         min(inv2.start_date_time)              END_DATE_TIME,
         mitm2.start_date_time                 MEDIA_START_DATE_TIME,
         0                                     FLAG
       FROM
         JTF_IH_MEDIA_ITEM_LC_SEGS mseg2,
         JTF_IH_MEDIA_ITEMS mitm2,
	     (
		select name, max(route_classification_id) route_classification_id
	    from iem_route_classifications
	    group by name
		) cls2,
         (
             SELECT /*+ index(mseg3 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) */
                    mseg3.media_id,
                    mseg3.resource_id,
                    mseg3.start_date_time
             FROM   JTF_IH_MEDIA_ITEM_LC_SEGS   mseg3
             WHERE  mseg3.milcs_type_id IN (G_FETCH,G_OPEN,G_A_ROUTED,G_RESOLVED,G_ASSIGNED,G_ASSIGN_OPEN,G_A_UPDATED_SR,G_A_REPLY,G_A_DELETED,G_A_REDIRECTED)
             AND    mseg3.START_DATE_TIME < g_collect_end_date
         ) inv2,
         (
			  SELECT /*+ ordered index(segs JTF_IH_MEDIA_ITEM_LC_SEGS_N3)  */
           distinct actv.media_id        media_id,
           first_value(intr.party_id)
           over(partition by actv.media_id order by actv.interaction_id desc) party_id
         FROM
           jtf_ih_media_item_lc_segs segs,
           jtf_ih_activities actv,
           jtf_ih_interactions intr
         WHERE segs.media_id = actv.media_id
         AND actv.interaction_id = intr.interaction_id
         AND segs.START_DATE_TIME BETWEEN g_collect_start_date AND g_collect_end_date
         AND segs.milcs_type_id IN (
		 G_FETCH, G_RESOLVED, G_A_REDIRECTED, G_A_DELETED, G_A_REPLY, G_OPEN, G_A_ROUTED, G_A_UPDATED_SR,
         G_ASSIGNED, G_ASSIGN_OPEN,G_DELETED )
         ) inv1
       WHERE
	   --mitm2.MEDIA_ITEM_TYPE = 'EMAIL'
	   1=1
       AND   mitm2.DIRECTION       = 'INBOUND'
       AND   mseg2.media_id        = mitm2.media_id
       AND   mitm2.classification  = cls2.name(+)
       AND   mitm2.MEDIA_ID        = inv2.MEDIA_ID
       AND   mitm2.media_id         = inv1.media_id
       AND   mseg2.START_DATE_TIME < g_collect_end_date
       AND   mseg2.MILCS_TYPE_ID   = g_processing
       AND   inv2.START_DATE_TIME   >= mseg2.START_DATE_TIME
       GROUP BY
         mitm2.media_id,
         nvl(mitm2.source_id, -1),
         nvl(cls2.route_classification_id, -1),
    inv1.party_id,
         mseg2.start_date_time,
         mitm2.start_date_time
	 ) iview
    WHERE ftd.start_date between trunc(iview.start_date_time) AND iview.end_date_time
    GROUP BY
      iview.email_account_id
      ,iview.email_classification_id
      ,iview.party_id
      ,ftd.start_date
)inv2
GROUP BY
      inv2.email_account_id,
      inv2.email_classification_id,
      inv2.agent_id,
      inv2.party_id,
      inv2.time_id,
      inv2.period_start_date,
      inv2.period_start_time,
      inv2.outcome_id,
      inv2.result_id,
      inv2.reason_id
)  change
  ON (
      fact.email_account_id = change.email_account_id
      AND fact.email_classification_id = change.email_classification_id
      AND fact.agent_id = change.agent_id
      AND fact.party_id = change.party_id
      AND fact.time_id = change.time_id
      AND fact.period_type_id = change.period_type_id
      AND fact.period_start_date = change.period_start_date
      AND fact.period_start_time = change.period_start_time
      AND fact.outcome_id = change.outcome_id
      AND fact.result_id = change.result_id
      AND fact.reason_id = change.reason_id )
  WHEN MATCHED THEN
    UPDATE
      SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
             0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
      ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
             0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
      ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
             0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
      ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
             0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
      ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
                   0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
      ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
             nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
      ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
      ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
             0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
      ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
             0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
      ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
             0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
      ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
             0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
      ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
             0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
      ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
             0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
      ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
             0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
      ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
             0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
      ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
             0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
      ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
             0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
      ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
             0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
      ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
             0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
--
--Note that accumulated measures are not added together - they are replaced by the new
--calculated value as they are not additive.
--
      ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
      ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
      ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
      ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
      ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
      ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
      ,fact.last_updated_by = change.last_updated_by
      ,fact.last_update_date = change.last_update_date
      ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
             0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
      ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
             0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
  WHEN NOT MATCHED THEN
    INSERT (
      fact.email_account_id,
      fact.email_classification_id,
      fact.agent_id,
      fact.party_id,
      fact.time_id,
      fact.period_type_id,
      fact.period_start_date,
      fact.period_start_time,
      fact.outcome_id,
      fact.result_id,
      fact.reason_id,
      fact.created_by,
      fact.creation_date,
      fact.last_updated_by,
      fact.last_update_date,
      fact.emails_offered_in_period,
      fact.emails_fetched_in_period,
      fact.emails_replied_in_period,
      fact.emails_rpld_by_goal_in_period,
      fact.AGENT_EMAILS_RPLD_BY_GOAL,
      fact.emails_deleted_in_period,
      fact.emails_trnsfrd_out_in_period,
      fact.emails_trnsfrd_in_in_period,
      fact.emails_assigned_in_period,
      fact.emails_auto_routed_in_period,
      fact.emails_auto_uptd_sr_in_period,
      fact.email_resp_time_in_period,
      fact.agent_resp_time_in_period,
      fact.sr_created_in_period,
      fact.emails_rsl_and_trfd_in_period,
      fact.emails_orr_count_in_period,
      fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
      fact.EMAILS_AUTO_DELETED_IN_PERIOD,
      fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      fact.emails_composed_in_period,
      fact.accumulated_open_emails,
      fact.accumulated_emails_in_queue,
      fact.accumulated_emails_one_day,
      fact.accumulated_emails_three_days,
      fact.accumulated_emails_week,
      fact.accumulated_emails_week_plus,
      fact.request_id,
      fact.program_application_id,
      fact.program_id,
      fact.program_update_date,
      fact.emails_rerouted_in_period,
      fact.leads_created_in_period )
    VALUES (
      change.email_account_id,
      change.email_classification_id,
      change.agent_id,
      change.party_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.created_by,
      change.creation_date,
      change.last_updated_by,
      change.last_update_date,
      decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
      decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
      decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
      decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
      decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
      decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
      decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
      decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
      decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
      decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
      decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
      change.request_id,
      change.program_application_id,
      change.program_id,
      change.program_update_date,
      decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
      decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
      );
Line: 4226

write_log('Number of rows updated in table bix_email_details_stg for Emails in Queue  ' || to_char(SQL%ROWCOUNT));
Line: 4230

  write_log('Number of rows updated in table bix_email_details_f : ' || to_char(SQL%ROWCOUNT));
Line: 4256

  SELECT
    rlp.agent_id                                     agent_id,
    rlp.email_account_id                             email_account_id,
    rlp.email_classification_id                      email_classification_id,
    rlp.party_id                                     party_id,
    rlp.time_id                                      time_id,
    rlp.period_type_id                               period_type_id,
    rlp.period_start_date                            period_start_date,
    rlp.period_start_time                            period_start_time,
    rlp.outcome_id                                   outcome_id,
    rlp.result_id                                    result_id,
    rlp.reason_id                                    reason_id,
    (-1)*decode(sum(rlp.emails_offered_in_period), 0, to_number(null), sum(rlp.emails_offered_in_period))
                                                     emails_offered_in_period,
    (-1)*decode(sum(rlp.emails_fetched_in_period), 0, to_number(null), sum(rlp.emails_fetched_in_period))
                                                     emails_fetched_in_period,
    (-1)*decode(sum(rlp.emails_replied_in_period), 0, to_number(null), sum(rlp.emails_replied_in_period))
                                                     emails_replied_in_period,
    (-1)*decode(sum(rlp.emails_rpld_by_goal_in_period), 0, to_number(null), sum(rlp.emails_rpld_by_goal_in_period))
                                                     emails_rpld_by_goal_in_period,
    (-1)*decode(sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL))
                                                         AGENT_EMAILS_RPLD_BY_GOAL,
    (-1)*decode(sum(rlp.emails_deleted_in_period), 0, to_number(null), sum(rlp.emails_deleted_in_period))
                                                     emails_deleted_in_period,
    (-1)*decode(sum(rlp.emails_trnsfrd_out_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_out_in_period))
                                                     emails_trnsfrd_out_in_period,
    (-1)*decode(sum(rlp.emails_trnsfrd_in_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_in_in_period))
                                                     emails_trnsfrd_in_in_period,
    (-1)*decode(sum(rlp.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(rlp.emails_rsl_and_trfd_in_period))
                                                     emails_rsl_and_trfd_in_period,
    (-1)*decode(sum(rlp.emails_assigned_in_period), 0, to_number(null), sum(rlp.emails_assigned_in_period))
                                                     emails_assigned_in_period,
    (-1)*decode(sum(rlp.emails_auto_routed_in_period), 0, to_number(null), sum(rlp.emails_auto_routed_in_period))
                                                     emails_auto_routed_in_period,
    (-1)*decode(sum(rlp.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(rlp.emails_auto_uptd_sr_in_period))
                                                     emails_auto_uptd_sr_in_period,
    (-1)*decode(sum(rlp.sr_created_in_period), 0, to_number(null), sum(rlp.sr_created_in_period))
                                                     sr_created_in_period,
    to_date(null)                                    oldest_email_open_date,
    to_date(null)                                    oldest_email_queue_date,
    (-1)*decode(sum(rlp.email_resp_time_in_period), 0, to_number(null), sum(rlp.email_resp_time_in_period))
                                                     email_resp_time_in_period,
    (-1)*decode(sum(rlp.agent_resp_time_in_period), 0, to_number(null), sum(rlp.agent_resp_time_in_period))
                                                     agent_resp_time_in_period,
    (-1)*min(rlp.acc_open_emails)                         acc_open_emails,
    to_number(null)                                  acc_open_age,
    (-1)*min(rlp.acc_emails_in_queue)                     acc_emails_in_queue,
    to_number(null)                                  acc_queue_time,
    (-1)*min(rlp.acc_emails_one_day)                      acc_emails_one_day,
    (-1)*min(rlp.acc_emails_three_days)                   acc_emails_three_days,
    (-1)*min(rlp.acc_emails_week)                         acc_emails_week,
    (-1)*min(rlp.acc_emails_week_plus)                    acc_emails_week_plus,
    (-1)*decode(sum(rlp.emails_orr_count_in_period),0,to_number(null),sum(emails_orr_count_in_period)) emails_orr_count_in_period,
    (-1)*decode(sum(rlp.EMAILS_AUTO_REPLIED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_REPLIED_IN_PERIOD)) EMAILS_AUTO_REPLIED_IN_PERIOD,
    (-1)*decode(sum(rlp.EMAILS_AUTO_DELETED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_DELETED_IN_PERIOD)) EMAILS_AUTO_DELETED_IN_PERIOD,
    (-1)*decode(sum(rlp.EMAILS_AUTO_RESOLVED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_RESOLVED_IN_PERIOD)) EMAILS_AUTO_RESOLVED_IN_PERIOD,
    (-1)*decode(sum(rlp.emails_composed_in_period),0,to_number(null),sum(emails_composed_in_period)) emails_composed_in_period,
    (-1)*decode(sum(rlp.emails_rerouted_in_period),0,to_number(null),sum(emails_rerouted_in_period)) emails_rerouted_in_period,
    (-1)*decode(sum(rlp.leads_created_in_period),0,to_number(null),sum(leads_created_in_period)) leads_created_in_period ,
    (-1)*decode(sum(rlp.ONE_RSLN_IN_PERIOD),0,to_number(null),sum(ONE_RSLN_IN_PERIOD)) ONE_RSLN_IN_PERIOD,
    (-1)*decode(sum(rlp.TWO_RSLN_IN_PERIOD),0,to_number(null),sum(TWO_RSLN_IN_PERIOD)) TWO_RSLN_IN_PERIOD,
    (-1)*decode(sum(rlp.THREE_RSLN_IN_PERIOD),0,to_number(null),sum(THREE_RSLN_IN_PERIOD)) THREE_RSLN_IN_PERIOD,
    (-1)*decode(sum(rlp.FOUR_RSLN_IN_PERIOD),0,to_number(null),sum(FOUR_RSLN_IN_PERIOD)) FOUR_RSLN_IN_PERIOD,
    (-1)*decode(sum(rlp.INTERACTION_THREADS_IN_PERIOD),0,to_number(null),sum(INTERACTION_THREADS_IN_PERIOD)) INTERACTION_THREADS_IN_PERIOD
  FROM (
    SELECT
      inv2.agent_id agent_id,
      inv2.email_account_id email_account_id,
      inv2.email_classification_id email_classification_id,
      inv2.party_id party_id,
      inv2.outcome_id outcome_id,
      inv2.result_id result_id,
      inv2.reason_id reason_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), inv2.ent_year_id),
              inv2.ent_qtr_id), inv2.ent_period_id), inv2.week_id) time_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
              128), 64), 32), 16) period_type_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_date(null), min(inv2.ent_year_start_date)),
              min(inv2.ent_qtr_start_date)), min(inv2.ent_period_start_date)), min(inv2.week_start_date)) period_start_date,
      '00:00' period_start_time,
      sum(inv2.emails_offered_in_period) emails_offered_in_period,
      sum(inv2.emails_fetched_in_period) emails_fetched_in_period,
      sum(inv2.emails_replied_in_period) emails_replied_in_period,
      sum(inv2.emails_rpld_by_goal_in_period) emails_rpld_by_goal_in_period,
      sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL) AGENT_EMAILS_RPLD_BY_GOAL,
      sum(inv2.emails_deleted_in_period) emails_deleted_in_period,
      sum(inv2.emails_trnsfrd_out_in_period) emails_trnsfrd_out_in_period,
      sum(inv2.emails_trnsfrd_in_in_period) emails_trnsfrd_in_in_period,
      sum(inv2.emails_rsl_and_trfd_in_period) emails_rsl_and_trfd_in_period,
      sum(inv2.emails_assigned_in_period) emails_assigned_in_period,
      sum(inv2.emails_auto_routed_in_period) emails_auto_routed_in_period,
      sum(inv2.emails_auto_uptd_sr_in_period) emails_auto_uptd_sr_in_period,
      sum(inv2.sr_created_in_period) sr_created_in_period,
      sum(inv2.email_resp_time_in_period) email_resp_time_in_period,
      sum(inv2.agent_resp_time_in_period) agent_resp_time_in_period,
      sum(inv2.emails_orr_count_in_period) emails_orr_count_in_period,
      sum(inv2.EMAILS_AUTO_REPLIED_IN_PERIOD) EMAILS_AUTO_REPLIED_IN_PERIOD,
      sum(inv2.EMAILS_AUTO_DELETED_IN_PERIOD) EMAILS_AUTO_DELETED_IN_PERIOD,
      sum(inv2.EMAILS_AUTO_RESOLVED_IN_PERIOD) EMAILS_AUTO_RESOLVED_IN_PERIOD,
      sum(inv2.emails_composed_in_period) emails_composed_in_period,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_open_emails)),
              min(inv2.qtr_acc_open_emails)), min(inv2.period_acc_open_emails)), min(inv2.week_acc_open_emails)) acc_open_emails,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_in_queue)),
              min(inv2.qtr_acc_emails_in_queue)), min(inv2.period_acc_emails_in_queue)), min(inv2.week_acc_emails_in_queue))
         acc_emails_in_queue,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_one_day)),
              min(inv2.qtr_acc_emails_one_day)), min(inv2.period_acc_emails_one_day)), min(inv2.week_acc_emails_one_day)) acc_emails_one_day,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_three_days)),
              min(inv2.qtr_acc_emails_three_days)), min(inv2.period_acc_emails_three_days)),
                min(inv2.week_acc_emails_three_days))            acc_emails_three_days,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week)),
              min(inv2.qtr_acc_emails_week)), min(inv2.period_acc_emails_week)), min(inv2.week_acc_emails_week)) acc_emails_week,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week_plus)),
              min(inv2.qtr_acc_emails_week_plus)), min(inv2.period_acc_emails_week_plus)),
                min(inv2.week_acc_emails_week_plus))  acc_emails_week_plus,
      sum(inv2.EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
      sum(inv2.LEADS_CREATED_IN_PERIOD) LEADS_CREATED_IN_PERIOD,
      sum(inv2.ONE_RSLN_IN_PERIOD) ONE_RSLN_IN_PERIOD,
      sum(inv2.TWO_RSLN_IN_PERIOD) TWO_RSLN_IN_PERIOD,
      sum(inv2.THREE_RSLN_IN_PERIOD) THREE_RSLN_IN_PERIOD,
      sum(inv2.FOUR_RSLN_IN_PERIOD) FOUR_RSLN_IN_PERIOD,
      sum(inv2.INTERACTION_THREADS_IN_PERIOD) INTERACTION_THREADS_IN_PERIOD
    FROM
      (SELECT /*+ index(bead BIX_EMAIL_DETAILS_F_N1) */
         bead.agent_id agent_id,
         bead.email_account_id email_account_id,
         bead.email_classification_id email_classification_id,
         bead.party_id party_id,
         bead.outcome_id,
         bead.result_id,
         bead.reason_id,
         ftd.ent_year_id ent_year_id,
         ftd.ent_year_start_date ent_year_start_date,
         ftd.ent_qtr_id ent_qtr_id,
         ftd.ent_qtr_start_date ent_qtr_start_date,
         ftd.ent_period_id ent_period_id,
         ftd.ent_period_start_date ent_period_start_date,
         ftd.week_id  week_id,
         ftd.week_start_date week_start_date,
         bead.period_start_date period_start_date,
         bead.emails_offered_in_period emails_offered_in_period,
         bead.emails_fetched_in_period emails_fetched_in_period,
         bead.emails_replied_in_period emails_replied_in_period,
         bead.emails_rpld_by_goal_in_period emails_rpld_by_goal_in_period,
         bead.AGENT_EMAILS_RPLD_BY_GOAL AGENT_EMAILS_RPLD_BY_GOAL,
         bead.emails_deleted_in_period emails_deleted_in_period,
         bead.emails_trnsfrd_out_in_period emails_trnsfrd_out_in_period,
         bead.emails_trnsfrd_in_in_period emails_trnsfrd_in_in_period,
         bead.emails_rsl_and_trfd_in_period emails_rsl_and_trfd_in_period,
         bead.emails_assigned_in_period emails_assigned_in_period,
         bead.emails_auto_routed_in_period emails_auto_routed_in_period,
         bead.emails_auto_uptd_sr_in_period emails_auto_uptd_sr_in_period,
         bead.sr_created_in_period sr_created_in_period,
         bead.email_resp_time_in_period email_resp_time_in_period,
         bead.agent_resp_time_in_period agent_resp_time_in_period,
         bead.emails_orr_count_in_period emails_orr_count_in_period,
         bead.EMAILS_AUTO_REPLIED_IN_PERIOD EMAILS_AUTO_REPLIED_IN_PERIOD,
         bead.EMAILS_AUTO_DELETED_IN_PERIOD EMAILS_AUTO_DELETED_IN_PERIOD,
         bead.EMAILS_AUTO_RESOLVED_IN_PERIOD EMAILS_AUTO_RESOLVED_IN_PERIOD,
         bead.emails_composed_in_period emails_composed_in_period,
	    bead.emails_rerouted_in_period emails_rerouted_in_period,
	    bead.leads_created_in_period leads_created_in_period,
         bead.ONE_RSLN_IN_PERIOD ONE_RSLN_IN_PERIOD,
         bead.TWO_RSLN_IN_PERIOD TWO_RSLN_IN_PERIOD,
         bead.THREE_RSLN_IN_PERIOD THREE_RSLN_IN_PERIOD,
         bead.FOUR_RSLN_IN_PERIOD FOUR_RSLN_IN_PERIOD,
         bead.INTERACTION_THREADS_IN_PERIOD INTERACTION_THREADS_IN_PERIOD,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_open_emails,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_in_queue,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_one_day,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                       lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_three_days,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
		       bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week_plus
       FROM bix_email_details_f bead,
            fii_time_day ftd
       WHERE bead.time_id = ftd.report_date_julian
       AND   bead.period_type_id = 1
       --AND   bead.period_start_date >= p_min_date     --DOES NOT PERFORM INDEX SCAN IF USING PERIOD_START_DATE
	  AND bead.time_id >= to_number( to_char(p_min_date,'J'))
	  ) inv2
    GROUP BY
         inv2.agent_id,
         inv2.email_account_id,
         inv2.email_classification_id,
         inv2.party_id,
         inv2.outcome_id,
    inv2.result_id,
    inv2.reason_id,
    ROLLUP(
         inv2.ent_year_id,
         inv2.ent_qtr_id,
         inv2.ent_period_id,
         inv2.week_id)
    HAVING
         decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
                  decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
                         128), 64), 32), 16) IS NOT NULL) rlp
  GROUP BY
    rlp.agent_id,
    rlp.email_account_id,
    rlp.email_classification_id,
    rlp.party_id,
    rlp.time_id,
    rlp.period_type_id,
    rlp.period_start_date,
    rlp.period_start_time,
    rlp.outcome_id,
    rlp.result_id,
    rlp.reason_id) change
  ON (  bead.agent_id = change.agent_id
    AND bead.email_account_id = change.email_account_id
    AND bead.email_classification_id = change.email_classification_id
    AND bead.party_id = change.party_id
    AND bead.time_id  = change.time_id
    AND bead.period_type_id = change.period_type_id
    AND bead.period_start_date = change.period_start_date
    AND bead.period_start_time = change.period_start_time
    AND bead.outcome_id        = change.outcome_id
    AND bead.result_id         = change.result_id
    AND bead.reason_id         = change.reason_id )
  WHEN MATCHED THEN
  UPDATE SET
    bead.emails_offered_in_period =
        decode(change.emails_offered_in_period, to_number(null), bead.emails_offered_in_period,
           nvl(bead.emails_offered_in_period,0) + change.emails_offered_in_period),
    bead.emails_fetched_in_period =
        decode(change.emails_fetched_in_period, to_number(null), bead.emails_fetched_in_period,
           nvl(bead.emails_fetched_in_period,0) + change.emails_fetched_in_period),
    bead.emails_replied_in_period =
        decode(change.emails_replied_in_period, to_number(null), bead.emails_replied_in_period,
           nvl(bead.emails_replied_in_period,0) + change.emails_replied_in_period),
    bead.emails_rpld_by_goal_in_period =
        decode(change.emails_rpld_by_goal_in_period, to_number(null), bead.emails_rpld_by_goal_in_period,
             nvl(bead.emails_rpld_by_goal_in_period,0) + change.emails_rpld_by_goal_in_period),
    bead.AGENT_EMAILS_RPLD_BY_GOAL =
            decode(change.AGENT_EMAILS_RPLD_BY_GOAL, to_number(null), bead.AGENT_EMAILS_RPLD_BY_GOAL,
                 nvl(bead.AGENT_EMAILS_RPLD_BY_GOAL,0) + change.AGENT_EMAILS_RPLD_BY_GOAL),
    bead.emails_deleted_in_period =
        decode(change.emails_deleted_in_period, to_number(null), bead.emails_deleted_in_period,
           nvl(bead.emails_deleted_in_period,0) + change.emails_deleted_in_period),
    bead.emails_trnsfrd_out_in_period =
        decode(change.emails_trnsfrd_out_in_period, to_number(null), bead.emails_trnsfrd_out_in_period,
           nvl(bead.emails_trnsfrd_out_in_period,0) + change.emails_trnsfrd_out_in_period),
    bead.emails_trnsfrd_in_in_period =
        decode(change.emails_trnsfrd_in_in_period, to_number(null), bead.emails_trnsfrd_in_in_period,
           nvl(bead.emails_trnsfrd_in_in_period,0) + change.emails_trnsfrd_in_in_period),
    bead.emails_rsl_and_trfd_in_period =
        decode(change.emails_rsl_and_trfd_in_period,to_number(null),bead.emails_rsl_and_trfd_in_period,
           nvl(bead.emails_rsl_and_trfd_in_period,0) + change.emails_rsl_and_trfd_in_period),
    bead.emails_assigned_in_period =
        decode(change.emails_assigned_in_period, to_number(null), bead.emails_assigned_in_period,
           nvl(bead.emails_assigned_in_period,0) + change.emails_assigned_in_period),
    bead.emails_auto_routed_in_period =
        decode(change.emails_auto_routed_in_period, to_number(null), bead.emails_auto_routed_in_period,
           nvl(bead.emails_auto_routed_in_period,0) + change.emails_auto_routed_in_period),
    bead.emails_auto_uptd_sr_in_period =
        decode(change.emails_auto_uptd_sr_in_period, to_number(null), bead.emails_auto_uptd_sr_in_period,
           nvl(bead.emails_auto_uptd_sr_in_period,0) + change.emails_auto_uptd_sr_in_period),
    bead.sr_created_in_period = decode(change.sr_created_in_period, to_number(null), bead.sr_created_in_period,
           nvl(bead.sr_created_in_period,0) + change.sr_created_in_period),
    bead.oldest_email_open_date =
           decode(change.oldest_email_open_date,NULL,bead.oldest_email_open_date,
               decode(bead.oldest_email_open_date,NULL,change.oldest_email_open_date,
                 decode(sign(bead.oldest_email_open_date - change.oldest_email_open_date),
                    -1,bead.oldest_email_open_date, change.oldest_email_open_date))),
    bead.oldest_email_queue_date =
           decode(change.oldest_email_queue_date,NULL,bead.oldest_email_queue_date,
               decode(bead.oldest_email_queue_date,NULL,change.oldest_email_queue_date,
                 decode(sign(bead.oldest_email_queue_date - change.oldest_email_queue_date),
                    -1,bead.oldest_email_queue_date, change.oldest_email_queue_date))),
    bead.email_resp_time_in_period =
        decode(change.email_resp_time_in_period, to_number(null), bead.email_resp_time_in_period,
           nvl(bead.email_resp_time_in_period,0) + change.email_resp_time_in_period),
    bead.agent_resp_time_in_period =
        decode(change.agent_resp_time_in_period, to_number(null), bead.agent_resp_time_in_period,
           nvl(bead.agent_resp_time_in_period,0) + change.agent_resp_time_in_period),
   bead.accumulated_open_emails =  decode(
                                      nvl(bead.accumulated_open_emails,0)+nvl(change.acc_open_emails,0),
                                      0,to_number(NULL),
                                      nvl(bead.accumulated_open_emails,0)+nvl(change.acc_open_emails,0)
                                       ),
    bead.accumulated_open_age =  decode(
                                      nvl(bead.accumulated_open_age,0)+nvl(change.acc_open_age,0),
                                      0,to_number(NULL),
                                      nvl(bead.accumulated_open_age,0)+nvl(change.acc_open_age,0)
                                      ),
    bead.accumulated_emails_in_queue = decode(
                                      nvl(bead.accumulated_emails_in_queue,0)+nvl(change.acc_emails_in_queue,0),
                                      0,to_number(null),
                                      nvl(bead.accumulated_emails_in_queue,0)+nvl(change.acc_emails_in_queue,0)
                                      ),
    bead.accumulated_queue_time = decode(
                                      nvl(bead.accumulated_queue_time,0)+nvl(change.acc_queue_time,0),
                                      0,to_number(null),
                                      nvl(bead.accumulated_queue_time,0)+nvl(change.acc_queue_time,0)
                                      ),
    bead.accumulated_emails_one_day = decode(
                                      nvl(bead.accumulated_emails_one_day,0)+nvl(change.acc_emails_one_day,0),
                                      0,to_number(null),
                                      nvl(bead.accumulated_emails_one_day,0)+nvl(change.acc_emails_one_day,0)
                                      ),
    bead.accumulated_emails_three_days = decode(
                                   nvl(bead.accumulated_emails_three_days,0)+nvl(change.acc_emails_three_days,0),
                                   0,to_number(null),
                                   nvl(bead.accumulated_emails_three_days,0)+nvl(change.acc_emails_three_days,0)
                                   ),
    bead.accumulated_emails_week =  decode(
                                      nvl(bead.accumulated_emails_week,0)+nvl(change.acc_emails_week,0),
                                      0,to_number(null),
                                      nvl(bead.accumulated_emails_week,0)+nvl(change.acc_emails_week,0)
                                      ),
    bead.accumulated_emails_week_plus = decode(
                                   nvl(bead.accumulated_emails_week_plus,0)+nvl(change.acc_emails_week_plus,0),
                                   0,to_number(null),
                                   nvl(bead.accumulated_emails_week_plus,0)+nvl(change.acc_emails_week_plus,0)
                                      ),
    bead.emails_orr_count_in_period  = decode(change.emails_orr_count_in_period,to_number(null), bead.emails_orr_count_in_period ,
      nvl(bead.emails_orr_count_in_period,0) + change.emails_orr_count_in_period),
    bead.EMAILS_AUTO_REPLIED_IN_PERIOD = decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_REPLIED_IN_PERIOD,
       nvl(bead.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + change.EMAILS_AUTO_REPLIED_IN_PERIOD),
    bead.EMAILS_AUTO_DELETED_IN_PERIOD = decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_DELETED_IN_PERIOD,
      nvl(bead.EMAILS_AUTO_DELETED_IN_PERIOD,0) + change.EMAILS_AUTO_DELETED_IN_PERIOD),
    bead.EMAILS_AUTO_RESOLVED_IN_PERIOD = decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      nvl(bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
    bead.emails_composed_in_period = decode(change.emails_composed_in_period,to_number(null),bead.emails_composed_in_period,
                                            nvl(bead.emails_composed_in_period,0) + change.emails_composed_in_period),
    bead.emails_rerouted_in_period = decode(change.emails_rerouted_in_period,to_number(null),bead.emails_rerouted_in_period,
                                            nvl(bead.emails_rerouted_in_period,0) + change.emails_rerouted_in_period ),
    bead.leads_created_in_period = decode(change.leads_created_in_period,to_number(null),bead.leads_created_in_period,
                                          nvl(bead.leads_created_in_period,0) + change.leads_created_in_period ),
    bead.ONE_RSLN_IN_PERIOD =  decode(
    							nvl(bead.ONE_RSLN_IN_PERIOD ,0)+nvl(change.ONE_RSLN_IN_PERIOD ,0),
    							0,to_number(null),
   							 nvl(bead.ONE_RSLN_IN_PERIOD ,0)+nvl(change.ONE_RSLN_IN_PERIOD ,0)
   						 ),
    bead.TWO_RSLN_IN_PERIOD =  decode(
 							 nvl(bead.TWO_RSLN_IN_PERIOD ,0)+nvl(change.TWO_RSLN_IN_PERIOD ,0),
   							 0,to_number(null),
 							   nvl(bead.TWO_RSLN_IN_PERIOD ,0)+nvl(change.TWO_RSLN_IN_PERIOD ,0)
  						  ),
    bead.THREE_RSLN_IN_PERIOD =  decode(
						    nvl(bead.THREE_RSLN_IN_PERIOD ,0)+nvl(change.THREE_RSLN_IN_PERIOD ,0),
						    0,to_number(null),
						    nvl(bead.THREE_RSLN_IN_PERIOD ,0)+nvl(change.THREE_RSLN_IN_PERIOD ,0)
   						 ),
    bead.FOUR_RSLN_IN_PERIOD =  decode(
 						   nvl(bead.FOUR_RSLN_IN_PERIOD ,0)+nvl(change.FOUR_RSLN_IN_PERIOD ,0),
						    0,to_number(null),
  						  nvl(bead.FOUR_RSLN_IN_PERIOD ,0)+nvl(change.FOUR_RSLN_IN_PERIOD ,0)
   						 ),
    bead.INTERACTION_THREADS_IN_PERIOD =  decode(
    								nvl(bead.INTERACTION_THREADS_IN_PERIOD,0)+nvl(change.INTERACTION_THREADS_IN_PERIOD,0),
 								   0,to_number(null),
  								  nvl(bead.INTERACTION_THREADS_IN_PERIOD,0)+nvl(change.INTERACTION_THREADS_IN_PERIOD,0)
   						 ),
    bead.last_update_date = g_sysdate,
    bead.last_updated_by  = g_user_id,
    bead.program_update_date = g_sysdate
  WHEN NOT MATCHED THEN INSERT
     (agent_id,
      email_account_id,
      email_classification_id,
      party_id,
      outcome_id,
      result_id,
      reason_id,
      time_id,
      period_type_id,
      period_start_date,
      period_start_time,
      created_by,
      creation_date,
      last_updated_by,
      last_update_date,
      emails_offered_in_period,
      emails_fetched_in_period,
      emails_replied_in_period,
      emails_rpld_by_goal_in_period,
      AGENT_EMAILS_RPLD_BY_GOAL,
      emails_deleted_in_period,
      emails_trnsfrd_out_in_period,
      emails_trnsfrd_in_in_period,
      emails_rsl_and_trfd_in_period,
      emails_assigned_in_period,
      emails_auto_routed_in_period,
      emails_auto_uptd_sr_in_period,
      sr_created_in_period,
      oldest_email_open_date,
      oldest_email_queue_date,
      email_resp_time_in_period,
      agent_resp_time_in_period,
      accumulated_open_emails,
      accumulated_open_age,
      accumulated_emails_in_queue,
      accumulated_queue_time,
      accumulated_emails_one_day,
      accumulated_emails_three_days,
      accumulated_emails_week,
      accumulated_emails_week_plus,
      emails_orr_count_in_period,
      EMAILS_AUTO_REPLIED_IN_PERIOD,
      EMAILS_AUTO_DELETED_IN_PERIOD,
      EMAILS_AUTO_RESOLVED_IN_PERIOD,
      emails_composed_in_period,
	 emails_rerouted_in_period,
	 leads_created_in_period,
      ONE_RSLN_IN_PERIOD,
      TWO_RSLN_IN_PERIOD,
      THREE_RSLN_IN_PERIOD,
      FOUR_RSLN_IN_PERIOD,
	 INTERACTION_THREADS_IN_PERIOD,
      request_id,
      program_application_id,
      program_id,
      program_update_date )
    VALUES (
      change.agent_id,
      change.email_account_id,
      change.email_classification_id,
      change.party_id,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      g_user_id,
      g_sysdate,
      g_user_id,
      g_sysdate,
      decode(change.emails_offered_in_period, 0, to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0, to_number(null), change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0, to_number(null), change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0, to_number(null), change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0, to_number(null), change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0, to_number(null), change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0, to_number(null), change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0, to_number(null), change.emails_trnsfrd_in_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0, to_number(null), change.emails_rsl_and_trfd_in_period),
      decode(change.emails_assigned_in_period, 0, to_number(null), change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0, to_number(null), change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0, to_number(null), change.emails_auto_uptd_sr_in_period),
      decode(change.sr_created_in_period, 0, to_number(null), change.sr_created_in_period),
      change.oldest_email_open_date,
      change.oldest_email_queue_date,
      decode(change.email_resp_time_in_period, 0, to_number(null), change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0, to_number(null), change.agent_resp_time_in_period),
      decode(change.acc_open_emails, 0, to_number(null), change.acc_open_emails),
      decode(change.acc_open_age, 0, to_number(null), change.acc_open_age),
      decode(change.acc_emails_in_queue, 0, to_number(null), change.acc_emails_in_queue),
      decode(change.acc_queue_time, 0, to_number(null), change.acc_queue_time),
      decode(change.acc_emails_one_day, 0, to_number(null), change.acc_emails_one_day),
      decode(change.acc_emails_three_days, 0, to_number(null), change.acc_emails_three_days),
      decode(change.acc_emails_week, 0, to_number(null), change.acc_emails_week),
      decode(change.acc_emails_week_plus, 0, to_number(null), change.acc_emails_week_plus),
      decode(change.emails_orr_count_in_period,0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period,0,to_number(null),change.emails_composed_in_period),
	 decode(change.emails_rerouted_in_period,0,to_number(null),change.emails_rerouted_in_period),
	 decode(change.leads_created_in_period,0,to_number(null),change.leads_created_in_period),
      decode(change.ONE_RSLN_IN_PERIOD,0,to_number(null),change.ONE_RSLN_IN_PERIOD),
	 decode(change.TWO_RSLN_IN_PERIOD,0,to_number(null),change.TWO_RSLN_IN_PERIOD),
	 decode(change.THREE_RSLN_IN_PERIOD,0,to_number(null),change.THREE_RSLN_IN_PERIOD),
	 decode(change.FOUR_RSLN_IN_PERIOD,0,to_number(null),change.FOUR_RSLN_IN_PERIOD),
	 decode(change.INTERACTION_THREADS_IN_PERIOD,0,to_number(null),change.INTERACTION_THREADS_IN_PERIOD),
	 g_request_id,
	 g_program_appl_id,
	 g_program_id,
      g_sysdate);
Line: 4906

  SELECT
    rlp.agent_id                                     agent_id,
    rlp.email_account_id                             email_account_id,
    rlp.email_classification_id                      email_classification_id,
    rlp.party_id                                     party_id,
    rlp.time_id                                      time_id,
    rlp.period_type_id                               period_type_id,
    rlp.period_start_date                            period_start_date,
    rlp.period_start_time                            period_start_time,
    rlp.outcome_id                                   outcome_id,
    rlp.result_id                                    result_id,
    rlp.reason_id                                    reason_id,
    decode(sum(rlp.emails_offered_in_period), 0, to_number(null), sum(rlp.emails_offered_in_period))
                                                     emails_offered_in_period,
    decode(sum(rlp.emails_fetched_in_period), 0, to_number(null), sum(rlp.emails_fetched_in_period))
                                                     emails_fetched_in_period,
    decode(sum(rlp.emails_replied_in_period), 0, to_number(null), sum(rlp.emails_replied_in_period))
                                                     emails_replied_in_period,
    decode(sum(rlp.emails_rpld_by_goal_in_period), 0, to_number(null), sum(rlp.emails_rpld_by_goal_in_period))
                                                     emails_rpld_by_goal_in_period,
    decode(sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL))
                                                         AGENT_EMAILS_RPLD_BY_GOAL,
    decode(sum(rlp.emails_deleted_in_period), 0, to_number(null), sum(rlp.emails_deleted_in_period))
                                                     emails_deleted_in_period,
    decode(sum(rlp.emails_trnsfrd_out_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_out_in_period))
                                                     emails_trnsfrd_out_in_period,
    decode(sum(rlp.emails_trnsfrd_in_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_in_in_period))
                                                     emails_trnsfrd_in_in_period,
    decode(sum(rlp.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(rlp.emails_rsl_and_trfd_in_period))
                                                     emails_rsl_and_trfd_in_period,
    decode(sum(rlp.emails_assigned_in_period), 0, to_number(null), sum(rlp.emails_assigned_in_period))
                                                     emails_assigned_in_period,
    decode(sum(rlp.emails_auto_routed_in_period), 0, to_number(null), sum(rlp.emails_auto_routed_in_period))
                                                     emails_auto_routed_in_period,
    decode(sum(rlp.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(rlp.emails_auto_uptd_sr_in_period))
                                                     emails_auto_uptd_sr_in_period,
    decode(sum(rlp.sr_created_in_period), 0, to_number(null), sum(rlp.sr_created_in_period))
                                                     sr_created_in_period,
    to_date(null)                                    oldest_email_open_date,
    to_date(null)                                    oldest_email_queue_date,
    decode(sum(rlp.email_resp_time_in_period), 0, to_number(null), sum(rlp.email_resp_time_in_period))
                                                     email_resp_time_in_period,
    decode(sum(rlp.agent_resp_time_in_period), 0, to_number(null), sum(rlp.agent_resp_time_in_period))
                                                     agent_resp_time_in_period,
    min(rlp.acc_open_emails)                         acc_open_emails,
    to_number(null)                                  acc_open_age,
    min(rlp.acc_emails_in_queue)                     acc_emails_in_queue,
    to_number(null)                                  acc_queue_time,
    min(rlp.acc_emails_one_day)                      acc_emails_one_day,
    min(rlp.acc_emails_three_days)                   acc_emails_three_days,
    min(rlp.acc_emails_week)                         acc_emails_week,
    min(rlp.acc_emails_week_plus)                    acc_emails_week_plus,
    decode(sum(rlp.emails_orr_count_in_period),0,to_number(null),sum(emails_orr_count_in_period)) emails_orr_count_in_period,
    decode(sum(rlp.EMAILS_AUTO_REPLIED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_REPLIED_IN_PERIOD)) EMAILS_AUTO_REPLIED_IN_PERIOD,
    decode(sum(rlp.EMAILS_AUTO_DELETED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_DELETED_IN_PERIOD)) EMAILS_AUTO_DELETED_IN_PERIOD,
    decode(sum(rlp.EMAILS_AUTO_RESOLVED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_RESOLVED_IN_PERIOD)) EMAILS_AUTO_RESOLVED_IN_PERIOD,
    decode(sum(rlp.emails_composed_in_period),0,to_number(null),sum(emails_composed_in_period)) emails_composed_in_period,
    decode(sum(rlp.emails_rerouted_in_period),0,to_number(null),sum(emails_rerouted_in_period)) emails_rerouted_in_period,
    decode(sum(rlp.leads_created_in_period),0,to_number(null),sum(leads_created_in_period)) leads_created_in_period
  FROM (
    SELECT
      inv2.agent_id agent_id,
      inv2.email_account_id email_account_id,
      inv2.email_classification_id email_classification_id,
      inv2.party_id party_id,
      inv2.outcome_id outcome_id,
      inv2.result_id result_id,
      inv2.reason_id reason_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), inv2.ent_year_id),
              inv2.ent_qtr_id), inv2.ent_period_id), inv2.week_id) time_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
              128), 64), 32), 16) period_type_id,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_date(null), min(inv2.ent_year_start_date)),
              min(inv2.ent_qtr_start_date)), min(inv2.ent_period_start_date)), min(inv2.week_start_date)) period_start_date,
      '00:00' period_start_time,
      sum(inv2.emails_offered_in_period) emails_offered_in_period,
      sum(inv2.emails_fetched_in_period) emails_fetched_in_period,
      sum(inv2.emails_replied_in_period) emails_replied_in_period,
      sum(inv2.emails_rpld_by_goal_in_period) emails_rpld_by_goal_in_period,
      sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL) AGENT_EMAILS_RPLD_BY_GOAL,
      sum(inv2.emails_deleted_in_period) emails_deleted_in_period,
      sum(inv2.emails_trnsfrd_out_in_period) emails_trnsfrd_out_in_period,
      sum(inv2.emails_trnsfrd_in_in_period) emails_trnsfrd_in_in_period,
      sum(inv2.emails_rsl_and_trfd_in_period) emails_rsl_and_trfd_in_period,
      sum(inv2.emails_assigned_in_period) emails_assigned_in_period,
      sum(inv2.emails_auto_routed_in_period) emails_auto_routed_in_period,
      sum(inv2.emails_auto_uptd_sr_in_period) emails_auto_uptd_sr_in_period,
      sum(inv2.sr_created_in_period) sr_created_in_period,
      sum(inv2.email_resp_time_in_period) email_resp_time_in_period,
      sum(inv2.agent_resp_time_in_period) agent_resp_time_in_period,
      sum(inv2.emails_orr_count_in_period) emails_orr_count_in_period,
      sum(inv2.EMAILS_AUTO_REPLIED_IN_PERIOD) EMAILS_AUTO_REPLIED_IN_PERIOD,
      sum(inv2.EMAILS_AUTO_DELETED_IN_PERIOD) EMAILS_AUTO_DELETED_IN_PERIOD,
      sum(inv2.EMAILS_AUTO_RESOLVED_IN_PERIOD) EMAILS_AUTO_RESOLVED_IN_PERIOD,
      sum(inv2.emails_composed_in_period) emails_composed_in_period,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_open_emails)),
              min(inv2.qtr_acc_open_emails)), min(inv2.period_acc_open_emails)), min(inv2.week_acc_open_emails)) acc_open_emails,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_in_queue)),
              min(inv2.qtr_acc_emails_in_queue)), min(inv2.period_acc_emails_in_queue)), min(inv2.week_acc_emails_in_queue))
         acc_emails_in_queue,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_one_day)),
              min(inv2.qtr_acc_emails_one_day)), min(inv2.period_acc_emails_one_day)), min(inv2.week_acc_emails_one_day)) acc_emails_one_day,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_three_days)),
              min(inv2.qtr_acc_emails_three_days)), min(inv2.period_acc_emails_three_days)),
                min(inv2.week_acc_emails_three_days))            acc_emails_three_days,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week)),
              min(inv2.qtr_acc_emails_week)), min(inv2.period_acc_emails_week)), min(inv2.week_acc_emails_week)) acc_emails_week,
      decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
          decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week_plus)),
              min(inv2.qtr_acc_emails_week_plus)), min(inv2.period_acc_emails_week_plus)),
                min(inv2.week_acc_emails_week_plus))  acc_emails_week_plus,
      sum(inv2.EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
      sum(inv2.LEADS_CREATED_IN_PERIOD) LEADS_CREATED_IN_PERIOD
    FROM
      (SELECT /*+ index(bead BIX_EMAIL_DETAILS_F_N1) */
         bead.agent_id agent_id,
         bead.email_account_id email_account_id,
         bead.email_classification_id email_classification_id,
         bead.party_id party_id,
         bead.outcome_id,
         bead.result_id,
         bead.reason_id,
         ftd.ent_year_id ent_year_id,
         ftd.ent_year_start_date ent_year_start_date,
         ftd.ent_qtr_id ent_qtr_id,
         ftd.ent_qtr_start_date ent_qtr_start_date,
         ftd.ent_period_id ent_period_id,
         ftd.ent_period_start_date ent_period_start_date,
         ftd.week_id  week_id,
         ftd.week_start_date week_start_date,
         bead.period_start_date period_start_date,
         bead.emails_offered_in_period emails_offered_in_period,
         bead.emails_fetched_in_period emails_fetched_in_period,
         bead.emails_replied_in_period emails_replied_in_period,
         bead.emails_rpld_by_goal_in_period emails_rpld_by_goal_in_period,
         bead.AGENT_EMAILS_RPLD_BY_GOAL AGENT_EMAILS_RPLD_BY_GOAL,
         bead.emails_deleted_in_period emails_deleted_in_period,
         bead.emails_trnsfrd_out_in_period emails_trnsfrd_out_in_period,
         bead.emails_trnsfrd_in_in_period emails_trnsfrd_in_in_period,
         bead.emails_rsl_and_trfd_in_period emails_rsl_and_trfd_in_period,
         bead.emails_assigned_in_period emails_assigned_in_period,
         bead.emails_auto_routed_in_period emails_auto_routed_in_period,
         bead.emails_auto_uptd_sr_in_period emails_auto_uptd_sr_in_period,
         bead.sr_created_in_period sr_created_in_period,
         bead.email_resp_time_in_period email_resp_time_in_period,
         bead.agent_resp_time_in_period agent_resp_time_in_period,
         bead.emails_orr_count_in_period emails_orr_count_in_period,
         bead.EMAILS_AUTO_REPLIED_IN_PERIOD EMAILS_AUTO_REPLIED_IN_PERIOD,
         bead.EMAILS_AUTO_DELETED_IN_PERIOD EMAILS_AUTO_DELETED_IN_PERIOD,
         bead.EMAILS_AUTO_RESOLVED_IN_PERIOD EMAILS_AUTO_RESOLVED_IN_PERIOD,
         bead.emails_composed_in_period emails_composed_in_period,
	    bead.emails_rerouted_in_period emails_rerouted_in_period,
	    bead.leads_created_in_period leads_created_in_period,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_open_emails,
         first_value(bead.accumulated_open_emails)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_open_emails,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_in_queue,
         first_value(bead.accumulated_emails_in_queue)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_in_queue,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_one_day,
         first_value(bead.accumulated_emails_one_day)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_one_day,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                       lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_three_days,
         first_value(bead.accumulated_emails_three_days)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_three_days,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week,
         first_value(bead.accumulated_emails_week)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.week_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_period_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_qtr_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                        lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week_plus,
         first_value(bead.accumulated_emails_week_plus)
           over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
                 bead.outcome_id, bead.result_id, bead.reason_id,
                 ftd.ent_year_id
                    order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
                      lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week_plus
       FROM bix_email_details_stg bead,
            fii_time_day ftd
       WHERE bead.time_id = ftd.report_date_julian
       AND   bead.period_type_id = 1
       --AND   bead.request_id = g_request_id
       ) inv2
    GROUP BY
         inv2.agent_id,
         inv2.email_account_id,
         inv2.email_classification_id,
         inv2.party_id,
         inv2.outcome_id,
    inv2.result_id,
    inv2.reason_id,
    ROLLUP(
         inv2.ent_year_id,
         inv2.ent_qtr_id,
         inv2.ent_period_id,
         inv2.week_id)
    HAVING
         decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
                  decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
                         128), 64), 32), 16) IS NOT NULL) rlp
  GROUP BY
    rlp.agent_id,
    rlp.email_account_id,
    rlp.email_classification_id,
    rlp.party_id,
    rlp.time_id,
    rlp.period_type_id,
    rlp.period_start_date,
    rlp.period_start_time,
    rlp.outcome_id,
    rlp.result_id,
    rlp.reason_id) change
  ON (  bead.agent_id = change.agent_id
    AND bead.email_account_id = change.email_account_id
    AND bead.email_classification_id = change.email_classification_id
    AND bead.party_id = change.party_id
    AND bead.time_id  = change.time_id
    AND bead.period_type_id = change.period_type_id
    AND bead.period_start_date = change.period_start_date
    AND bead.period_start_time = change.period_start_time
    AND bead.outcome_id        = change.outcome_id
    AND bead.result_id         = change.result_id
    AND bead.reason_id         = change.reason_id )
  WHEN MATCHED THEN
  UPDATE SET
    bead.emails_offered_in_period =
        decode(change.emails_offered_in_period, to_number(null), bead.emails_offered_in_period,
           nvl(bead.emails_offered_in_period,0) + change.emails_offered_in_period),
    bead.emails_fetched_in_period =
        decode(change.emails_fetched_in_period, to_number(null), bead.emails_fetched_in_period,
           nvl(bead.emails_fetched_in_period,0) + change.emails_fetched_in_period),
    bead.emails_replied_in_period =
        decode(change.emails_replied_in_period, to_number(null), bead.emails_replied_in_period,
           nvl(bead.emails_replied_in_period,0) + change.emails_replied_in_period),
    bead.emails_rpld_by_goal_in_period =
        decode(change.emails_rpld_by_goal_in_period, to_number(null), bead.emails_rpld_by_goal_in_period,
             nvl(bead.emails_rpld_by_goal_in_period,0) + change.emails_rpld_by_goal_in_period),
    bead.AGENT_EMAILS_RPLD_BY_GOAL =
            decode(change.AGENT_EMAILS_RPLD_BY_GOAL, to_number(null), bead.AGENT_EMAILS_RPLD_BY_GOAL,
                 nvl(bead.AGENT_EMAILS_RPLD_BY_GOAL,0) + change.AGENT_EMAILS_RPLD_BY_GOAL),
    bead.emails_deleted_in_period =
        decode(change.emails_deleted_in_period, to_number(null), bead.emails_deleted_in_period,
           nvl(bead.emails_deleted_in_period,0) + change.emails_deleted_in_period),
    bead.emails_trnsfrd_out_in_period =
        decode(change.emails_trnsfrd_out_in_period, to_number(null), bead.emails_trnsfrd_out_in_period,
           nvl(bead.emails_trnsfrd_out_in_period,0) + change.emails_trnsfrd_out_in_period),
    bead.emails_trnsfrd_in_in_period =
        decode(change.emails_trnsfrd_in_in_period, to_number(null), bead.emails_trnsfrd_in_in_period,
           nvl(bead.emails_trnsfrd_in_in_period,0) + change.emails_trnsfrd_in_in_period),
    bead.emails_rsl_and_trfd_in_period =
        decode(change.emails_rsl_and_trfd_in_period,to_number(null),bead.emails_rsl_and_trfd_in_period,
           nvl(bead.emails_rsl_and_trfd_in_period,0) + change.emails_rsl_and_trfd_in_period),
    bead.emails_assigned_in_period =
        decode(change.emails_assigned_in_period, to_number(null), bead.emails_assigned_in_period,
           nvl(bead.emails_assigned_in_period,0) + change.emails_assigned_in_period),
    bead.emails_auto_routed_in_period =
        decode(change.emails_auto_routed_in_period, to_number(null), bead.emails_auto_routed_in_period,
           nvl(bead.emails_auto_routed_in_period,0) + change.emails_auto_routed_in_period),
    bead.emails_auto_uptd_sr_in_period =
        decode(change.emails_auto_uptd_sr_in_period, to_number(null), bead.emails_auto_uptd_sr_in_period,
           nvl(bead.emails_auto_uptd_sr_in_period,0) + change.emails_auto_uptd_sr_in_period),
    bead.sr_created_in_period = decode(change.sr_created_in_period, to_number(null), bead.sr_created_in_period,
           nvl(bead.sr_created_in_period,0) + change.sr_created_in_period),
    bead.oldest_email_open_date =
           decode(change.oldest_email_open_date,NULL,bead.oldest_email_open_date,
               decode(bead.oldest_email_open_date,NULL,change.oldest_email_open_date,
                 decode(sign(bead.oldest_email_open_date - change.oldest_email_open_date),
                    -1,bead.oldest_email_open_date, change.oldest_email_open_date))),
    bead.oldest_email_queue_date =
           decode(change.oldest_email_queue_date,NULL,bead.oldest_email_queue_date,
               decode(bead.oldest_email_queue_date,NULL,change.oldest_email_queue_date,
                 decode(sign(bead.oldest_email_queue_date - change.oldest_email_queue_date),
                    -1,bead.oldest_email_queue_date, change.oldest_email_queue_date))),
    bead.email_resp_time_in_period =
        decode(change.email_resp_time_in_period, to_number(null), bead.email_resp_time_in_period,
           nvl(bead.email_resp_time_in_period,0) + change.email_resp_time_in_period),
    bead.agent_resp_time_in_period =
        decode(change.agent_resp_time_in_period, to_number(null), bead.agent_resp_time_in_period,
           nvl(bead.agent_resp_time_in_period,0) + change.agent_resp_time_in_period),
    bead.accumulated_open_emails = change.acc_open_emails,
    bead.accumulated_open_age = change.acc_open_age,
    bead.accumulated_emails_in_queue = change.acc_emails_in_queue,
    bead.accumulated_queue_time = change.acc_queue_time,
    bead.accumulated_emails_one_day = change.acc_emails_one_day,
    bead.accumulated_emails_three_days = change.acc_emails_three_days,
    bead.accumulated_emails_week = change.acc_emails_week,
    bead.accumulated_emails_week_plus = change.acc_emails_week_plus,
    bead.emails_orr_count_in_period  = decode(change.emails_orr_count_in_period,to_number(null), bead.emails_orr_count_in_period ,
      nvl(bead.emails_orr_count_in_period,0) + change.emails_orr_count_in_period),
    bead.EMAILS_AUTO_REPLIED_IN_PERIOD = decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_REPLIED_IN_PERIOD,
       nvl(bead.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + change.EMAILS_AUTO_REPLIED_IN_PERIOD),
    bead.EMAILS_AUTO_DELETED_IN_PERIOD = decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_DELETED_IN_PERIOD,
      nvl(bead.EMAILS_AUTO_DELETED_IN_PERIOD,0) + change.EMAILS_AUTO_DELETED_IN_PERIOD),
    bead.EMAILS_AUTO_RESOLVED_IN_PERIOD = decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,
      nvl(bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
    bead.emails_composed_in_period = decode(change.emails_composed_in_period,to_number(null),bead.emails_composed_in_period,
                                            nvl(bead.emails_composed_in_period,0) + change.emails_composed_in_period),
    bead.emails_rerouted_in_period = decode(change.emails_rerouted_in_period,to_number(null),bead.emails_rerouted_in_period,
                                            nvl(bead.emails_rerouted_in_period,0) + change.emails_rerouted_in_period ),
    bead.leads_created_in_period = decode(change.leads_created_in_period,to_number(null),bead.leads_created_in_period,
                                          nvl(bead.leads_created_in_period,0) + change.leads_created_in_period ),
    bead.last_update_date = g_sysdate,
    bead.last_updated_by  = g_user_id,
    bead.program_update_date = g_sysdate
  WHEN NOT MATCHED THEN INSERT
     (agent_id,
      email_account_id,
      email_classification_id,
      party_id,
      outcome_id,
      result_id,
      reason_id,
      time_id,
      period_type_id,
      period_start_date,
      period_start_time,
      created_by,
      creation_date,
      last_updated_by,
      last_update_date,
      emails_offered_in_period,
      emails_fetched_in_period,
      emails_replied_in_period,
      emails_rpld_by_goal_in_period,
      AGENT_EMAILS_RPLD_BY_GOAL,
      emails_deleted_in_period,
      emails_trnsfrd_out_in_period,
      emails_trnsfrd_in_in_period,
      emails_rsl_and_trfd_in_period,
      emails_assigned_in_period,
      emails_auto_routed_in_period,
      emails_auto_uptd_sr_in_period,
      sr_created_in_period,
      oldest_email_open_date,
      oldest_email_queue_date,
      email_resp_time_in_period,
      agent_resp_time_in_period,
      accumulated_open_emails,
      accumulated_open_age,
      accumulated_emails_in_queue,
      accumulated_queue_time,
      accumulated_emails_one_day,
      accumulated_emails_three_days,
      accumulated_emails_week,
      accumulated_emails_week_plus,
      emails_orr_count_in_period,
      EMAILS_AUTO_REPLIED_IN_PERIOD,
      EMAILS_AUTO_DELETED_IN_PERIOD,
      EMAILS_AUTO_RESOLVED_IN_PERIOD,
      emails_composed_in_period,
	 emails_rerouted_in_period,
	 leads_created_in_period,
      request_id,
      program_application_id,
      program_id,
      program_update_date )
    VALUES (
      change.agent_id,
      change.email_account_id,
      change.email_classification_id,
      change.party_id,
      change.outcome_id,
      change.result_id,
      change.reason_id,
      change.time_id,
      change.period_type_id,
      change.period_start_date,
      change.period_start_time,
      g_user_id,
      g_sysdate,
      g_user_id,
      g_sysdate,
      decode(change.emails_offered_in_period, 0, to_number(null), change.emails_offered_in_period),
      decode(change.emails_fetched_in_period, 0, to_number(null), change.emails_fetched_in_period),
      decode(change.emails_replied_in_period, 0, to_number(null), change.emails_replied_in_period),
      decode(change.emails_rpld_by_goal_in_period, 0, to_number(null), change.emails_rpld_by_goal_in_period),
      decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0, to_number(null), change.AGENT_EMAILS_RPLD_BY_GOAL),
      decode(change.emails_deleted_in_period, 0, to_number(null), change.emails_deleted_in_period),
      decode(change.emails_trnsfrd_out_in_period, 0, to_number(null), change.emails_trnsfrd_out_in_period),
      decode(change.emails_trnsfrd_in_in_period, 0, to_number(null), change.emails_trnsfrd_in_in_period),
      decode(change.emails_rsl_and_trfd_in_period, 0, to_number(null), change.emails_rsl_and_trfd_in_period),
      decode(change.emails_assigned_in_period, 0, to_number(null), change.emails_assigned_in_period),
      decode(change.emails_auto_routed_in_period, 0, to_number(null), change.emails_auto_routed_in_period),
      decode(change.emails_auto_uptd_sr_in_period, 0, to_number(null), change.emails_auto_uptd_sr_in_period),
      decode(change.sr_created_in_period, 0, to_number(null), change.sr_created_in_period),
      change.oldest_email_open_date,
      change.oldest_email_queue_date,
      decode(change.email_resp_time_in_period, 0, to_number(null), change.email_resp_time_in_period),
      decode(change.agent_resp_time_in_period, 0, to_number(null), change.agent_resp_time_in_period),
      decode(change.acc_open_emails, 0, to_number(null), change.acc_open_emails),
      decode(change.acc_open_age, 0, to_number(null), change.acc_open_age),
      decode(change.acc_emails_in_queue, 0, to_number(null), change.acc_emails_in_queue),
      decode(change.acc_queue_time, 0, to_number(null), change.acc_queue_time),
      decode(change.acc_emails_one_day, 0, to_number(null), change.acc_emails_one_day),
      decode(change.acc_emails_three_days, 0, to_number(null), change.acc_emails_three_days),
      decode(change.acc_emails_week, 0, to_number(null), change.acc_emails_week),
      decode(change.acc_emails_week_plus, 0, to_number(null), change.acc_emails_week_plus),
      decode(change.emails_orr_count_in_period,0,to_number(null),change.emails_orr_count_in_period),
      decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
      decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
      decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
      decode(change.emails_composed_in_period,0,to_number(null),change.emails_composed_in_period),
	 decode(change.emails_rerouted_in_period,0,to_number(null),change.emails_rerouted_in_period),
	 decode(change.leads_created_in_period,0,to_number(null),change.leads_created_in_period),
      g_request_id,
      g_program_appl_id,
      g_program_id,
      g_sysdate);
Line: 5465

SELECT
 AGENT_ID,
 EMAIL_ACCOUNT_ID,
 EMAIL_CLASSIFICATION_ID,
 PARTY_ID,
 TIME_ID,
 PERIOD_TYPE_ID,
 PERIOD_START_DATE,
 PERIOD_START_TIME,
 CREATED_BY,
 CREATION_DATE,
 LAST_UPDATED_BY,
 LAST_UPDATE_DATE,
 LAST_UPDATE_LOGIN,
 nvl(EMAILS_OFFERED_IN_PERIOD,0) EMAILS_OFFERED_IN_PERIOD,
 nvl(EMAILS_FETCHED_IN_PERIOD,0) EMAILS_FETCHED_IN_PERIOD,
 nvl(EMAILS_REPLIED_IN_PERIOD,0) EMAILS_REPLIED_IN_PERIOD,
 nvl(EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) EMAILS_RPLD_BY_GOAL_IN_PERIOD,
 nvl(AGENT_EMAILS_RPLD_BY_GOAL,0) AGENT_EMAILS_RPLD_BY_GOAL,
 nvl(EMAILS_DELETED_IN_PERIOD,0) EMAILS_DELETED_IN_PERIOD,
 nvl(EMAILS_TRNSFRD_OUT_IN_PERIOD,0) EMAILS_TRNSFRD_OUT_IN_PERIOD,
 nvl(EMAILS_TRNSFRD_IN_IN_PERIOD,0) EMAILS_TRNSFRD_IN_IN_PERIOD,
 nvl(EMAILS_RSL_AND_TRFD_IN_PERIOD,0) EMAILS_RSL_AND_TRFD_IN_PERIOD,
 nvl(EMAILS_ASSIGNED_IN_PERIOD,0) EMAILS_ASSIGNED_IN_PERIOD,
 nvl(EMAILS_AUTO_ROUTED_IN_PERIOD,0) EMAILS_AUTO_ROUTED_IN_PERIOD,
 nvl(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) EMAILS_AUTO_UPTD_SR_IN_PERIOD,
 nvl(SR_CREATED_IN_PERIOD,0) SR_CREATED_IN_PERIOD,
 nvl(ACCUMULATED_OPEN_EMAILS,0) ACCUMULATED_OPEN_EMAILS,
 NULL ACCUMULATED_OPEN_AGE,
 to_date(NULL) OLDEST_EMAIL_OPEN_DATE,
 nvl(ACCUMULATED_EMAILS_IN_QUEUE,0) ACCUMULATED_EMAILS_IN_QUEUE,
 NULL ACCUMULATED_QUEUE_TIME,
 to_date(NULL) OLDEST_EMAIL_QUEUE_DATE,
 nvl(EMAIL_RESP_TIME_IN_PERIOD,0) EMAIL_RESP_TIME_IN_PERIOD,
 nvl(AGENT_RESP_TIME_IN_PERIOD,0) AGENT_RESP_TIME_IN_PERIOD,
 nvl(ACCUMULATED_EMAILS_ONE_DAY,0) ACCUMULATED_EMAILS_ONE_DAY,
 nvl(ACCUMULATED_EMAILS_THREE_DAYS,0) ACCUMULATED_EMAILS_THREE_DAYS,
 nvl(ACCUMULATED_EMAILS_WEEK,0) ACCUMULATED_EMAILS_WEEK,
 nvl(ACCUMULATED_EMAILS_WEEK_PLUS,0) ACCUMULATED_EMAILS_WEEK_PLUS,
 nvl(ONE_RSLN_IN_PERIOD,0) ONE_RSLN_IN_PERIOD,
 nvl(TWO_RSLN_IN_PERIOD,0) TWO_RSLN_IN_PERIOD,
 nvl(THREE_RSLN_IN_PERIOD,0) THREE_RSLN_IN_PERIOD,
 nvl(FOUR_RSLN_IN_PERIOD,0) FOUR_RSLN_IN_PERIOD,
 nvl(INTERACTION_THREADS_IN_PERIOD,0) INTERACTION_THREADS_IN_PERIOD,
 OUTCOME_ID,
 RESULT_ID,
 REASON_ID,
 nvl(EMAILS_AUTO_REPLIED_IN_PERIOD,0) EMAILS_AUTO_REPLIED_IN_PERIOD,
 nvl(EMAILS_AUTO_DELETED_IN_PERIOD,0) EMAILS_AUTO_DELETED_IN_PERIOD,
 nvl(EMAILS_AUTO_RESOLVED_IN_PERIOD,0) EMAILS_AUTO_RESOLVED_IN_PERIOD,
 nvl(EMAILS_ORR_COUNT_IN_PERIOD,0) EMAILS_ORR_COUNT_IN_PERIOD,
 nvl(EMAILS_COMPOSED_IN_PERIOD,0) EMAILS_COMPOSED_IN_PERIOD,
 nvl(LEADS_CREATED_IN_PERIOD,0) LEADS_CREATED_IN_PERIOD,
 nvl(EMAILS_REROUTED_IN_PERIOD,0) EMAILS_REROUTED_IN_PERIOD
FROM BIX_EMAIL_DETAILS_STG
) STG
ON
(
summ.AGENT_ID = stg.AGENT_ID
AND summ.EMAIL_ACCOUNT_ID = stg.EMAIL_ACCOUNT_ID
AND summ.EMAIL_CLASSIFICATION_ID = stg.EMAIL_CLASSIFICATION_ID
AND summ.PARTY_ID = stg.PARTY_ID
AND summ.TIME_ID = stg.TIME_ID
AND summ.PERIOD_TYPE_ID = stg.PERIOD_TYPE_ID
AND summ.PERIOD_START_DATE = stg.PERIOD_START_DATE
AND summ.PERIOD_START_TIME = stg.PERIOD_START_TIME
AND summ.OUTCOME_ID = stg.OUTCOME_ID
AND summ.RESULT_ID = stg.RESULT_ID
AND summ.REASON_ID = stg.REASON_ID
)
WHEN MATCHED
THEN
UPDATE
SET
 EMAILS_OFFERED_IN_PERIOD  =
     decode (
     nvl(summ.EMAILS_OFFERED_IN_PERIOD,0) + stg.EMAILS_OFFERED_IN_PERIOD,0,NULL,
     nvl(summ.EMAILS_OFFERED_IN_PERIOD,0) + stg.EMAILS_OFFERED_IN_PERIOD
            ),
 EMAILS_FETCHED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_FETCHED_IN_PERIOD,0) + stg.EMAILS_FETCHED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_FETCHED_IN_PERIOD,0) + stg.EMAILS_FETCHED_IN_PERIOD
            ),
 EMAILS_REPLIED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_REPLIED_IN_PERIOD,0) + stg.EMAILS_REPLIED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_REPLIED_IN_PERIOD,0) + stg.EMAILS_REPLIED_IN_PERIOD
            ),
 EMAILS_RPLD_BY_GOAL_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) + stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) + stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD
            ),
 AGENT_EMAILS_RPLD_BY_GOAL =
      decode (
      nvl(summ.AGENT_EMAILS_RPLD_BY_GOAL,0) + stg.AGENT_EMAILS_RPLD_BY_GOAL ,0,NULL,
      nvl(summ.AGENT_EMAILS_RPLD_BY_GOAL,0) + stg.AGENT_EMAILS_RPLD_BY_GOAL
             ),
 EMAILS_DELETED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_DELETED_IN_PERIOD,0) + stg.EMAILS_DELETED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_DELETED_IN_PERIOD,0) + stg.EMAILS_DELETED_IN_PERIOD
            ),
 EMAILS_TRNSFRD_OUT_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_OUT_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_OUT_IN_PERIOD
            ),
 EMAILS_TRNSFRD_IN_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_TRNSFRD_IN_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_IN_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_TRNSFRD_IN_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_IN_IN_PERIOD
            ),
 EMAILS_RSL_AND_TRFD_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,0) + stg.EMAILS_RSL_AND_TRFD_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,0) + stg.EMAILS_RSL_AND_TRFD_IN_PERIOD
            ),
 EMAILS_ASSIGNED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_ASSIGNED_IN_PERIOD,0) + stg.EMAILS_ASSIGNED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_ASSIGNED_IN_PERIOD,0) + stg.EMAILS_ASSIGNED_IN_PERIOD
            ),
 EMAILS_AUTO_ROUTED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_AUTO_ROUTED_IN_PERIOD,0) + stg.EMAILS_AUTO_ROUTED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_AUTO_ROUTED_IN_PERIOD,0) + stg.EMAILS_AUTO_ROUTED_IN_PERIOD
            ),
 EMAILS_AUTO_UPTD_SR_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) + stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) + stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD
            ),
 SR_CREATED_IN_PERIOD =
     decode (
     nvl(summ.SR_CREATED_IN_PERIOD,0) + stg.SR_CREATED_IN_PERIOD ,0,NULL,
     nvl(summ.SR_CREATED_IN_PERIOD,0) + stg.SR_CREATED_IN_PERIOD
            ),
 ACCUMULATED_OPEN_EMAILS = stg.ACCUMULATED_OPEN_EMAILS,
 ACCUMULATED_EMAILS_IN_QUEUE = stg.ACCUMULATED_EMAILS_IN_QUEUE,
 EMAIL_RESP_TIME_IN_PERIOD =
     decode (
     nvl(summ.EMAIL_RESP_TIME_IN_PERIOD,0) + stg.EMAIL_RESP_TIME_IN_PERIOD ,0,NULL,
     nvl(summ.EMAIL_RESP_TIME_IN_PERIOD,0) + stg.EMAIL_RESP_TIME_IN_PERIOD
            ),
 AGENT_RESP_TIME_IN_PERIOD =
     decode (
     nvl(summ.AGENT_RESP_TIME_IN_PERIOD,0) + stg.AGENT_RESP_TIME_IN_PERIOD ,0,NULL,
     nvl(summ.AGENT_RESP_TIME_IN_PERIOD,0) + stg.AGENT_RESP_TIME_IN_PERIOD
            ),
 ACCUMULATED_EMAILS_ONE_DAY = decode(stg.ACCUMULATED_EMAILS_ONE_DAY,0,to_number(null),stg.ACCUMULATED_EMAILS_ONE_DAY),
 ACCUMULATED_EMAILS_THREE_DAYS = decode(stg.ACCUMULATED_EMAILS_THREE_DAYS,0,to_number(null),stg.ACCUMULATED_EMAILS_THREE_DAYS),
 ACCUMULATED_EMAILS_WEEK = decode(stg.ACCUMULATED_EMAILS_WEEK,0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK),
 ACCUMULATED_EMAILS_WEEK_PLUS = decode(stg.ACCUMULATED_EMAILS_WEEK_PLUS,0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK_PLUS),
 ONE_RSLN_IN_PERIOD =
     decode (
     nvl(summ.ONE_RSLN_IN_PERIOD,0) + stg.ONE_RSLN_IN_PERIOD ,0,NULL,
     nvl(summ.ONE_RSLN_IN_PERIOD,0) + stg.ONE_RSLN_IN_PERIOD
            ),
 TWO_RSLN_IN_PERIOD =
     decode (
     nvl(summ.TWO_RSLN_IN_PERIOD,0) + stg.TWO_RSLN_IN_PERIOD ,0,NULL,
     nvl(summ.TWO_RSLN_IN_PERIOD,0) + stg.TWO_RSLN_IN_PERIOD
            ),
 THREE_RSLN_IN_PERIOD =
     decode (
     nvl(summ.THREE_RSLN_IN_PERIOD,0) + stg.THREE_RSLN_IN_PERIOD ,0,NULL,
     nvl(summ.THREE_RSLN_IN_PERIOD,0) + stg.THREE_RSLN_IN_PERIOD
            ),
 FOUR_RSLN_IN_PERIOD =
     decode (
     nvl(summ.FOUR_RSLN_IN_PERIOD,0) + stg.FOUR_RSLN_IN_PERIOD ,0,NULL,
     nvl(summ.FOUR_RSLN_IN_PERIOD,0) + stg.FOUR_RSLN_IN_PERIOD
            ),
 INTERACTION_THREADS_IN_PERIOD =
     decode (
     nvl(summ.INTERACTION_THREADS_IN_PERIOD,0) + stg.INTERACTION_THREADS_IN_PERIOD ,0,NULL,
     nvl(summ.INTERACTION_THREADS_IN_PERIOD,0) + stg.INTERACTION_THREADS_IN_PERIOD
            ),
 EMAILS_AUTO_REPLIED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + stg.EMAILS_AUTO_REPLIED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + stg.EMAILS_AUTO_REPLIED_IN_PERIOD
            ),
 EMAILS_AUTO_DELETED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_AUTO_DELETED_IN_PERIOD,0) + stg.EMAILS_AUTO_DELETED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_AUTO_DELETED_IN_PERIOD,0) + stg.EMAILS_AUTO_DELETED_IN_PERIOD
            ),
 EMAILS_AUTO_RESOLVED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + stg.EMAILS_AUTO_RESOLVED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + stg.EMAILS_AUTO_RESOLVED_IN_PERIOD
            ),
 EMAILS_ORR_COUNT_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_ORR_COUNT_IN_PERIOD,0) + stg.EMAILS_ORR_COUNT_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_ORR_COUNT_IN_PERIOD,0) + stg.EMAILS_ORR_COUNT_IN_PERIOD
            ),
 EMAILS_COMPOSED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_COMPOSED_IN_PERIOD,0) + stg.EMAILS_COMPOSED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_COMPOSED_IN_PERIOD,0) + stg.EMAILS_COMPOSED_IN_PERIOD
            ),
 LEADS_CREATED_IN_PERIOD =
     decode (
     nvl(summ.LEADS_CREATED_IN_PERIOD,0) + stg.LEADS_CREATED_IN_PERIOD ,0,NULL,
     nvl(summ.LEADS_CREATED_IN_PERIOD,0) + stg.LEADS_CREATED_IN_PERIOD
            ),
 EMAILS_REROUTED_IN_PERIOD =
     decode (
     nvl(summ.EMAILS_REROUTED_IN_PERIOD,0) + stg.EMAILS_REROUTED_IN_PERIOD ,0,NULL,
     nvl(summ.EMAILS_REROUTED_IN_PERIOD,0) + stg.EMAILS_REROUTED_IN_PERIOD
            )
WHEN NOT MATCHED
THEN
INSERT
(
 summ.AGENT_ID,
 summ.EMAIL_ACCOUNT_ID,
 summ.EMAIL_CLASSIFICATION_ID,
 summ.PARTY_ID,
 summ.TIME_ID,
 summ.PERIOD_TYPE_ID,
 summ.PERIOD_START_DATE,
 summ.PERIOD_START_TIME,
 summ.CREATED_BY,
 summ.CREATION_DATE,
 summ.LAST_UPDATED_BY,
 summ.LAST_UPDATE_DATE,
 summ.LAST_UPDATE_LOGIN,
 summ.EMAILS_OFFERED_IN_PERIOD,
 summ.EMAILS_FETCHED_IN_PERIOD,
 summ.EMAILS_REPLIED_IN_PERIOD,
 summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,
 summ.AGENT_EMAILS_RPLD_BY_GOAL,
 summ.EMAILS_DELETED_IN_PERIOD,
 summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,
 summ.EMAILS_TRNSFRD_IN_IN_PERIOD,
 summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,
 summ.EMAILS_ASSIGNED_IN_PERIOD,
 summ.EMAILS_AUTO_ROUTED_IN_PERIOD,
 summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,
 summ.SR_CREATED_IN_PERIOD,
 summ.ACCUMULATED_OPEN_EMAILS,
 summ.ACCUMULATED_OPEN_AGE,
 summ.OLDEST_EMAIL_OPEN_DATE,
 summ.ACCUMULATED_EMAILS_IN_QUEUE,
 summ.ACCUMULATED_QUEUE_TIME,
 summ.OLDEST_EMAIL_QUEUE_DATE,
 summ.EMAIL_RESP_TIME_IN_PERIOD,
 summ.AGENT_RESP_TIME_IN_PERIOD,
 summ.ACCUMULATED_EMAILS_ONE_DAY,
 summ.ACCUMULATED_EMAILS_THREE_DAYS,
 summ.ACCUMULATED_EMAILS_WEEK,
 summ.ACCUMULATED_EMAILS_WEEK_PLUS,
 summ.ONE_RSLN_IN_PERIOD,
 summ.TWO_RSLN_IN_PERIOD,
 summ.THREE_RSLN_IN_PERIOD,
 summ.FOUR_RSLN_IN_PERIOD,
 summ.INTERACTION_THREADS_IN_PERIOD,
 summ.OUTCOME_ID,
 summ.RESULT_ID,
 summ.REASON_ID,
 summ.EMAILS_AUTO_REPLIED_IN_PERIOD,
 summ.EMAILS_AUTO_DELETED_IN_PERIOD,
 summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,
 summ.EMAILS_ORR_COUNT_IN_PERIOD,
 summ.EMAILS_COMPOSED_IN_PERIOD,
 summ.LEADS_CREATED_IN_PERIOD,
 summ.EMAILS_REROUTED_IN_PERIOD
)
values
(
 stg.AGENT_ID,
 stg.EMAIL_ACCOUNT_ID,
 stg.EMAIL_CLASSIFICATION_ID,
 stg.PARTY_ID,
 stg.TIME_ID,
 stg.PERIOD_TYPE_ID,
 stg.PERIOD_START_DATE,
 stg.PERIOD_START_TIME,
 stg.CREATED_BY,
 stg.CREATION_DATE,
 stg.LAST_UPDATED_BY,
 stg.LAST_UPDATE_DATE,
 stg.LAST_UPDATE_LOGIN,
 decode(stg.EMAILS_OFFERED_IN_PERIOD, 0,to_number(null),stg.EMAILS_OFFERED_IN_PERIOD),
 decode(stg.EMAILS_FETCHED_IN_PERIOD, 0,to_number(null),stg.EMAILS_FETCHED_IN_PERIOD),
 decode(stg.EMAILS_REPLIED_IN_PERIOD, 0,to_number(null),stg.EMAILS_REPLIED_IN_PERIOD),
 decode(stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD, 0,to_number(null),stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD),
 decode(stg.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),stg.AGENT_EMAILS_RPLD_BY_GOAL),
 decode(stg.EMAILS_DELETED_IN_PERIOD, 0,to_number(null),stg.EMAILS_DELETED_IN_PERIOD),
 decode(stg.EMAILS_TRNSFRD_OUT_IN_PERIOD, 0,to_number(null),stg.EMAILS_TRNSFRD_OUT_IN_PERIOD),
 decode(stg.EMAILS_TRNSFRD_IN_IN_PERIOD, 0,to_number(null),stg.EMAILS_TRNSFRD_IN_IN_PERIOD),
 decode(stg.EMAILS_RSL_AND_TRFD_IN_PERIOD, 0,to_number(null),stg.EMAILS_RSL_AND_TRFD_IN_PERIOD),
 decode(stg.EMAILS_ASSIGNED_IN_PERIOD, 0,to_number(null),stg.EMAILS_ASSIGNED_IN_PERIOD),
 decode(stg.EMAILS_AUTO_ROUTED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_ROUTED_IN_PERIOD),
 decode(stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD),
 decode(stg.SR_CREATED_IN_PERIOD, 0,to_number(null),stg.SR_CREATED_IN_PERIOD),
 decode(stg.ACCUMULATED_OPEN_EMAILS, 0,to_number(null),stg.ACCUMULATED_OPEN_EMAILS),
 decode(stg.ACCUMULATED_OPEN_AGE, 0,to_number(null),stg.ACCUMULATED_OPEN_AGE),
 stg.OLDEST_EMAIL_OPEN_DATE,
 decode(stg.ACCUMULATED_EMAILS_IN_QUEUE, 0,to_number(null),stg.ACCUMULATED_EMAILS_IN_QUEUE),
 decode(stg.ACCUMULATED_QUEUE_TIME, 0,to_number(null),stg.ACCUMULATED_QUEUE_TIME),
 stg.OLDEST_EMAIL_QUEUE_DATE,
 decode(stg.EMAIL_RESP_TIME_IN_PERIOD, 0,to_number(null),stg.EMAIL_RESP_TIME_IN_PERIOD),
 decode(stg.AGENT_RESP_TIME_IN_PERIOD, 0,to_number(null),stg.AGENT_RESP_TIME_IN_PERIOD),
 decode(stg.ACCUMULATED_EMAILS_ONE_DAY, 0,to_number(null),stg.ACCUMULATED_EMAILS_ONE_DAY),
 decode(stg.ACCUMULATED_EMAILS_THREE_DAYS, 0,to_number(null),stg.ACCUMULATED_EMAILS_THREE_DAYS),
 decode(stg.ACCUMULATED_EMAILS_WEEK, 0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK),
 decode(stg.ACCUMULATED_EMAILS_WEEK_PLUS, 0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK_PLUS),
 decode(stg.ONE_RSLN_IN_PERIOD, 0,to_number(null),stg.ONE_RSLN_IN_PERIOD),
 decode(stg.TWO_RSLN_IN_PERIOD, 0,to_number(null),stg.TWO_RSLN_IN_PERIOD),
 decode(stg.THREE_RSLN_IN_PERIOD, 0,to_number(null),stg.THREE_RSLN_IN_PERIOD),
 decode(stg.FOUR_RSLN_IN_PERIOD, 0,to_number(null),stg.FOUR_RSLN_IN_PERIOD),
 decode(stg.INTERACTION_THREADS_IN_PERIOD, 0,to_number(null),stg.INTERACTION_THREADS_IN_PERIOD),
 stg.OUTCOME_ID,
 stg.RESULT_ID,
 stg.REASON_ID,
 decode(stg.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_REPLIED_IN_PERIOD),
 decode(stg.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_DELETED_IN_PERIOD),
 decode(stg.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_RESOLVED_IN_PERIOD),
 decode(stg.EMAILS_ORR_COUNT_IN_PERIOD, 0,to_number(null),stg.EMAILS_ORR_COUNT_IN_PERIOD),
 decode(stg.EMAILS_COMPOSED_IN_PERIOD, 0,to_number(null),stg.EMAILS_COMPOSED_IN_PERIOD),
 decode(stg.LEADS_CREATED_IN_PERIOD, 0,to_number(null),stg.LEADS_CREATED_IN_PERIOD),
 decode(stg.EMAILS_REROUTED_IN_PERIOD, 0,to_number(null),stg.EMAILS_REROUTED_IN_PERIOD)
);
Line: 5847

    SELECT NVL(sum(decode(status,'UNASSIGNED', 1, 0)),0),
           NVL(sum(decode(status,'FAILED', 1, 0)),0),
           NVL(sum(decode(status,'IN PROCESS', 1, 0)),0),
           NVL(sum(decode(status,'COMPLETED',1 , 0)),0),
           count(*)
    INTO   l_unassigned_cnt,
           l_failed_cnt,
           l_wip_cnt,
           l_completed_cnt,
           l_total_cnt
    FROM   BIX_WORKER_JOBS
    WHERE  object_name = 'BIX_EMAIL_DETAILS_F';
Line: 5878

      UPDATE BIX_WORKER_JOBS
      SET    status        = 'IN PROCESS',
             worker_number = p_worker_no
      WHERE  status = 'UNASSIGNED'
      AND    rownum < 2
      AND    object_name = 'BIX_EMAIL_DETAILS_F';
Line: 5903

        SELECT start_date_range, end_date_range
        INTO   l_start_date_range, l_end_date_range
        FROM   BIX_WORKER_JOBS
        WHERE worker_number = p_worker_no
        AND   status        = 'IN PROCESS'
        AND   object_name   = 'BIX_EMAIL_DETAILS_F';
Line: 5918

        /* Update the status of job to 'COMPLETED' */
        UPDATE BIX_WORKER_JOBS
        SET    status = 'COMPLETED'
        WHERE  status = 'IN PROCESS'
        AND    worker_number = p_worker_no
        AND    object_name = 'BIX_EMAIL_DETAILS_F';
Line: 5931

          UPDATE BIX_WORKER_JOBS
          SET    status = 'FAILED'
          WHERE  worker_number = p_worker_no
          AND    status = 'IN PROCESS'
          AND    object_name = 'BIX_EMAIL_DETAILS_F';
Line: 6041

        SELECT NVL(sum(decode(status,'UNASSIGNED',1,0)),0),
               NVL(sum(decode(status,'COMPLETED',1,0)),0),
               NVL(sum(decode(status,'IN PROCESS',1,0)),0),
               NVL(sum(decode(status,'FAILED',1,0)),0),
               count(*)
        INTO   l_unassigned_cnt,
               l_completed_cnt,
               l_wip_cnt,
               l_failed_cnt,
               l_tot_cnt
        FROM   BIX_WORKER_JOBS
        WHERE  OBJECT_NAME = 'BIX_EMAIL_DETAILS_F';
Line: 6104

  write_log('Total Rows Inserted/Updated : ' || to_char(g_rows_ins_upd));
Line: 6116

  /* Insert the status into collect log table */
  write_log('Calling procedure WRAPUP');
Line: 6170

This procedure is called from the Update Email Summary concurrent program.
This procedure calls init to do some initialization and calls  MAIN procedure with start and End Dates.

*/


PROCEDURE  load (errbuf                OUT  NOCOPY VARCHAR2,
                 retcode               OUT  NOCOPY VARCHAR2,
                 p_number_of_processes IN   NUMBER)
IS
  l_last_start_date  DATE;
Line: 6194

SELECT
MAX(Decode(milcs_code,'EMAIL_PROCESSING',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_REPLY',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_AUTO_REPLY',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_FETCH',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_OPEN',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_TRANSFER',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_TRANSFERRED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_ASSIGN_OPEN',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_ASSIGNED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_AUTO_ROUTED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_AUTO_UPDATED_SR',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_ESCALATED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_DELETED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_AUTO_DELETED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_AUTO_REDIRECTED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_RESOLVED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_REROUTED_DIFF_CLASS',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_REROUTED_DIFF_ACCT',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_REQUEUED',milcs_type_id)) ,
MAX(Decode(milcs_code,'EMAIL_COMPOSE',milcs_type_id))
INTO
G_PROCESSING,
G_REPLY,
G_A_REPLY,
G_FETCH,
G_OPEN,
G_TRANSFER,
G_TRANSFERRED,
G_ASSIGN_OPEN,
G_ASSIGNED,
G_A_ROUTED,
G_A_UPDATED_SR,
G_ESCALATED,
G_DELETED,
G_A_DELETED,
G_A_REDIRECTED,
G_RESOLVED,
G_REROUTED_CLASS,
G_REROUTED_ACCT,
G_REQUEUED,
G_COMPOSE
FROM jtf_ih_media_itm_lc_seg_tys
WHERE milcs_code IN
(
'EMAIL_PROCESSING'
,'EMAIL_REPLY','EMAIL_AUTO_REPLY'
,'EMAIL_FETCH'
,'EMAIL_OPEN'
,'EMAIL_TRANSFER','EMAIL_TRANSFERRED'
,'EMAIL_ASSIGN_OPEN','EMAIL_ASSIGNED'
,'EMAIL_AUTO_ROUTED', 'EMAIL_AUTO_UPDATED_SR'
,'EMAIL_ESCALATED'
,'EMAIL_DELETED','EMAIL_AUTO_DELETED' ,'EMAIL_AUTO_REDIRECTED'
,'EMAIL_RESOLVED'
,'EMAIL_REROUTED_DIFF_CLASS','EMAIL_REROUTED_DIFF_ACCT','EMAIL_REQUEUED'
,'EMAIL_COMPOSE'
);
Line: 6283

  SELECT min(med.start_date_time)
  INTO l_min_media_date
  FROM jtf_ih_media_items med, jtf_ih_interactions int, jtf_ih_activities act,
        jtf_ih_media_item_lc_segs segs, jtf_ih_media_itm_lc_seg_tys tys
  WHERE med.media_item_type = 'EMAIL'
  AND int.interaction_id = act.interaction_id
  AND med.media_id = act.media_id
  AND med.media_id = segs.media_id
  AND segs.milcs_type_id = tys.milcs_type_id
  AND (
        (med.last_update_date BETWEEN l_last_period_to AND l_end_date
         --AND milcs_code in ('EMAIL_REROUTED_DIFF_ACCT', 'EMAIL_REROUTED_DIFF_CLASS')
         )
        OR int.last_update_date BETWEEN l_last_period_to AND l_end_date
       );
Line: 6304

	write_log('No updates to media or interaction which have already been collected');
Line: 6316

	--Using the values which are going to be deleted, ROLLUP as negative values
	--so that the higher level period types get subtracted. This is needed since we cannot
	--do FIRST_VALUE in MV. Hence ROLLUP cannot be moved into the MV layer.
	--
	--?????
	--we are changing the original ROLLUP and forcing to do a SUM even for the queue measures so
	--that they will cancel out with the newly added negative numbers. Is this okay to do??
	--also, what to do about oldest open age and oldest open date etc?
	--???
	--
 rollup_negatives(trunc(l_min_media_date));
Line: 6336

	DELETE BIX_EMAIL_DETAILS_F
	WHERE period_start_date >= trunc(l_min_media_date)
	AND period_type_id = 1;
Line: 6341

update bix_email_details_f
set
LAST_UPDATED_BY                 =g_user_id,
LAST_UPDATE_DATE                =g_sysdate,
EMAILS_OFFERED_IN_PERIOD        =null,
EMAILS_FETCHED_IN_PERIOD        =null,
EMAILS_REPLIED_IN_PERIOD        =null,
EMAILS_RPLD_BY_GOAL_IN_PERIOD   =null,
AGENT_EMAILS_RPLD_BY_GOAL	=null,
EMAILS_DELETED_IN_PERIOD        =null,
EMAILS_TRNSFRD_OUT_IN_PERIOD    =null,
EMAILS_TRNSFRD_IN_IN_PERIOD     =null,
EMAILS_RSL_AND_TRFD_IN_PERIOD   =null,
EMAILS_ASSIGNED_IN_PERIOD       =null,
EMAILS_AUTO_ROUTED_IN_PERIOD    =null,
EMAILS_AUTO_UPTD_SR_IN_PERIOD   =null,
SR_CREATED_IN_PERIOD            =null,
ACCUMULATED_OPEN_EMAILS         =null,
ACCUMULATED_OPEN_AGE            =null,
OLDEST_EMAIL_OPEN_DATE          =to_date(null),
ACCUMULATED_EMAILS_IN_QUEUE     =null,
ACCUMULATED_QUEUE_TIME          =null,
OLDEST_EMAIL_QUEUE_DATE         =to_date(null),
EMAIL_RESP_TIME_IN_PERIOD       =null,
AGENT_RESP_TIME_IN_PERIOD       =null,
ACCUMULATED_EMAILS_ONE_DAY      =null,
ACCUMULATED_EMAILS_THREE_DAYS   =null,
ACCUMULATED_EMAILS_WEEK         =null,
ACCUMULATED_EMAILS_WEEK_PLUS    =null,
EMAILS_AUTO_REPLIED_IN_PERIOD   =null,
EMAILS_AUTO_DELETED_IN_PERIOD   =null,
EMAILS_AUTO_RESOLVED_IN_PERIOD  =null,
EMAILS_ORR_COUNT_IN_PERIOD      =null,
EMAILS_COMPOSED_IN_PERIOD       =null,
LEADS_CREATED_IN_PERIOD       	=null,
EMAILS_REROUTED_IN_PERIOD       =null,
ONE_RSLN_IN_PERIOD              =null,
TWO_RSLN_IN_PERIOD              =null,
THREE_RSLN_IN_PERIOD            =null,
FOUR_RSLN_IN_PERIOD             =null,
INTERACTION_THREADS_IN_PERIOD   =null,
REQUEST_ID=g_request_id
--WHERE period_start_date >= trunc(l_min_media_date)
WHERE time_id >= to_number(to_char(trunc(l_min_media_date),'J'))
AND period_type_id = 1;
Line: 6396

     DELETE BIX_INTERACTIONS_TEMP BIXTEMP
	WHERE EXISTS
	      (
		 SELECT INTERACTION_ID
		 FROM JTF_IH_INTERACTIONS INT
		 WHERE START_DATE_TIME >= trunc(l_min_media_date)
		 AND INT.INTERACTION_ID = BIXTEMP.INTERACTION_ID
		 );