欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

联系及时率

程序员文章站 2024-01-08 14:27:34
...

无详细内容 无 CREATE OR REPLACE PROCEDURE P_MDJ_1001066_TO_ZW(I_SPAN IN VARCHAR2, --无用参数可输入任意值 O_SQL OUT VARCHAR2, O_FILE OUT VARCHAR2)/* 宽带工单1001066外呼数据上传装维系统 * 2014-02-20 * 蒙冬珏 * 需求流程:(DocID:1989216) 关于客

CREATE OR REPLACE PROCEDURE P_MDJ_1001066_TO_ZW(I_SPAN IN VARCHAR2, --无用参数可输入任意值
                                                O_SQL  OUT VARCHAR2,
                                                O_FILE OUT VARCHAR2)
/* 宽带工单1001066外呼数据上传装维系统
 * 2014-02-20
 * 蒙冬珏
 * 需求流程:(DocID:1989216) 关于客服系统开发并传送宽带预约及时率报表的需求单
 */

 AS
  O_RET          NUMBER;
  PROCEDURE_NAME VARCHAR2(200);
  V_SQLECODE     VARCHAR2(50);
  V_SQLERRM      VARCHAR2(500);
  V_FILENAME     VARCHAR2(100);
  V_SQL          VARCHAR2(4000);
BEGIN
  PROCEDURE_NAME:=GETEXEC_PROCEDURE_NAME();
  O_RET := 1;

  execute immediate 'truncate table ICDPUB.T_MDJ_1001066_TO_ZW';

  INSERT INTO ICDPUB.T_MDJ_1001066_TO_ZW
  SELECT B.SERIALNO 流水号,
         CI.ORGANAME 地市名称,
         B.AREAID 小区编码,
         B.FIXMAN 维护员,
         A.CALLERNO 主叫号码,
         A.CALLEDNO 被叫号码,
         CASE WHEN A.ISPROCESSED IS NULL THEN '未呼出'
              WHEN A.ISPROCESSED = '0' THEN '呼出失败'
              ELSE '呼出成功' END 首次呼出是否成功,
         A.REMARK 首次呼出失败原因,
         A.FIRSTCONTACTSTARTTIME 首次联系时间,
         A.LASTCONTACTSTARTTIME 最后一次联系时间,
         A.CONTACTDURATION 首次通话时长,
         CASE WHEN A.FIRSTCONTACTSTARTTIME IS NULL THEN '否'
              WHEN (A.FIRSTCONTACTSTARTTIME - B.ARRIVETIME1) * 24 > 1 THEN '否'
              ELSE '是' END 是否1小时内联系用户,
         CASE WHEN A.FIRSTCONTACTSTARTTIME IS NULL THEN '否'
              WHEN (A.FIRSTCONTACTSTARTTIME - B.ARRIVETIME2) * 24 > 3 THEN '否'
              ELSE '是' END 是否3小时内联系用户,
         A.CALLCOUNT 本流水号累计联系用户次数
     FROM (SELECT T.SUBSNUMBER,MAX(CASE WHEN T.RN=1 THEN T.ISPROCESSED END) ISPROCESSED,MIN(T.CONTACTSTARTTIME) FIRSTCONTACTSTARTTIME,
                  MAX(T.CONTACTSTARTTIME) LASTCONTACTSTARTTIME,MAX(CASE WHEN RN=1 THEN T.CALLERNO END) CALLERNO,
                  MAX(CASE WHEN RN=1 THEN T.CALLEDNO END) CALLEDNO,MAX(CASE WHEN RN=1 THEN T.CONTACTDURATION END) CONTACTDURATION,
                  MAX(CASE WHEN RN=1 THEN T.REMARK END) REMARK,COUNT(T.SUBSNUMBER) CALLCOUNT --一张工单有多次呼叫,按工单流水分组,取第一次呼叫用户的记录
                  FROM
               (SELECT CD.SUBSNUMBER,            --工单流水号
                       CD.ISPROCESSED,			 --是否呼叫成功
                       CD.CONTACTSTARTTIME,		 --联系时间
                       CD.CALLERNO,				 --主叫号码
                       CD.CALLEDNO,				 --被叫号码
                       CD.CONTACTDURATION,		 --呼叫时长
                       CD.REMARK,				 --呼叫备注(失败原因)
                       ROW_NUMBER() OVER(PARTITION BY CD.SUBSNUMBER ORDER BY CD.CONTACTSTARTTIME) RN
                  FROM ICDPUB.T_CCT_CONTACTDETAIL CD
                 WHERE CD.CONTACTMODEID = '19'
                  AND CD.CONTACTSTARTTIME >= TRUNC(SYSDATE)-11
                  AND CD.CONTACTSTARTTIME = 18 THEN
                     TRUNC(CREATIONTIME + 1) + 9 / 24 --18点后下派的工单,下派时间算作第二天9点
                    WHEN TO_CHAR(CREATIONTIME,'HH24') >17 AND TO_CHAR(CREATIONTIME,'HH24') = 18 THEN
                     TRUNC(CREATIONTIME + 1) + 8.5 / 24
                    WHEN TO_CHAR(CREATIONTIME, 'hh24') >15 AND TO_CHAR(CREATIONTIME, 'hh24') = TRUNC(SYSDATE)-1
                      AND PP.ARCHIVEDATE