`
taiwei.peng
  • 浏览: 234437 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

临时取数脚本

阅读更多
--01 删除表中的现有数据
TRUNCATE TABLE TEMP_WAYBILL_CYX;
--02将附件中的运单号拷贝到TEMP_WAYBILL_CYX 表中
--03 插入过度表值
DECLARE
  A DATE := DATE '2016-02-26';
  B DATE := DATE '2016-02-26';
  C DATE := DATE '2016-02-26';
  D DATE := DATE '2016-02-27';
BEGIN
  EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_SRCZONECODE_CYX';
  FOR Q IN 1 .. 15 LOOP
    INSERT INTO TEMP_SRCZONECODE_CYX
      (WAYBILL_NO, SRC_ZONE_CODE, DEST_ZONE_CODE)
      SELECT /*+ PARALLEL(T,5) */
       T.WAYBILL_NO, T.SRC_ZONE_CODE, T.DEST_ZONE_CODE
        FROM TT_WAYBILL_INFO T
       WHERE EXISTS
       (SELECT 1 FROM TEMP_WAYBILL_CYX WHERE WAYBILL_NO = T.WAYBILL_NO)
         AND T.REPORT_DT = A;
    COMMIT;
    A := A + 1;
  END LOOP;

  EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_RESULT_CYX';
  FOR Q IN 1 .. 15 LOOP
    INSERT INTO TEMP_RESULT_CYX
      (WAYBILL_NO,
       SRC_ZONE_CODE,
       DEST_ZONE_CODE,
       ROUTE_INDEX,
       BATCH_TYPE,
       S_ZONE_CODE,
       S_BATCH_CODE,
       S_OPT_TM,
       S_DELIVERY_TM,
       D_ZONE_CODE,
       D_BATCH_CODE,
       D_OPT_TM,
       D_DELIVERY_TM,
       D_S_OPT,
       D_S_DIFF,
       D_VEHICLE_NO,
       VEHICLE_AREA,
       D_BAR_OPT_CODE,
       STAY_WHY_NAME,
       EXCEPTION_STATUS,
       DUTY_STATUS)
      SELECT /*+ INDEX(IPK_WAYBILL_ROUTE_INFO) parallel(DT,5)*/
             DT.WAYBILL_NO AS 运单号,
             C.SRC_ZONE_CODE AS 始发网点,
             C.DEST_ZONE_CODE AS 目的网点,
             DT.ROUTE_INDEX AS 路由序号,
             (CASE DT.D_BATCH_TYPE
               WHEN 1 THEN
                '收件班次'
               WHEN 2 THEN
                '收件仓库班次'
               WHEN 3 THEN
                '中转班次'
               WHEN 4 THEN
                '运输班次'
               WHEN 5 THEN
                '派件仓库班次'
               WHEN 6 THEN
                '派件班次'
               ELSE
                ''
             END) AS 班次类型,
             DT.S_ZONE_CODE AS 静态网点,
             DT.S_BATCH_CODE AS 静态班次,
             DT.S_OPT_TM AS 静态操作时间,
             DT.S_DELIVERY_TM AS 静态派送时效,
             DT.D_ZONE_CODE AS 实际网点,
             DT.D_BATCH_BATCH_CODE AS 实际班次,
             DT.D_OPT_TM AS 动态操作时间,
             DT.D_DELIVERY_TM AS 动态派送时效,
             NVL(ROUND(TO_NUMBER(DT.D_OPT_TM - DT.S_OPT_TM) * 1440), 0) || 'm' AS 时差,
             NVL(ROUND(TO_NUMBER(DT.S_DELIVERY_TM - DT.D_DELIVERY_TM) * 1440),
                 0) || 'm' AS 时效差值,
             DT.D_VEHICLE_NO AS 车标号,
             '',
             DT.D_BAR_OPT_CODE AS 操作员,
             S.STAY_WHY_NAME AS 异常原因,
             T.EXCEPTION_NAME AS 异常状态,
             (CASE DT.DUTY_STATUS
               WHEN '0' THEN
                ''
               WHEN '1' THEN
                '仓库发件晚点'
               WHEN '2' THEN
                '中转发件晚点'
               WHEN '3' THEN
                '运输到达晚点'
               WHEN '4' THEN
                '仓库出仓晚点'
               WHEN '5' THEN
                '延误派送'
               ELSE
                '其他'
             END) AS 定责状态
        FROM TT_WAYBILL_ROUTE_INFO DT
        LEFT JOIN ompweb.Tm_Bar_Stay_Why_Code S
          ON DT.EXCEPTION_REASON = S.STAY_WHY_CODE
        LEFT JOIN TEMP_EXCEPTION_STATUS T
          ON NVL(T.EXCEPTION_STATUS, 0) =
             SUBSTR(DT.EXCEPTION_STATUS,
                    1,
                    INSTR(DT.EXCEPTION_STATUS || ',', ',') - 1)
       INNER JOIN TEMP_SRCZONECODE_CYX C
          ON DT.WAYBILL_NO = C.WAYBILL_NO
       WHERE DT.REPORT_DT = B;
    COMMIT;
    B := B + 1;
  END LOOP;
 
  EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_CONVE_PLATENUM';
  FOR Q IN 1 .. 15 LOOP
    INSERT INTO TEMP_CONVE_PLATENUM
      (VEHICLE_AREA, PLATE_NUM)
      SELECT T.VEHICLE_AREA, T.PLATE_NUM
        FROM TT_CONVEYANCE_SHOW T
       WHERE T.PLAN_DATE >= C
         AND T.PLAN_DATE < D;
    COMMIT;
    C := C + 1;
    D := D + 1;
  END LOOP;
 
  EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_CONVE_VEHICLEAREA';
  INSERT INTO TEMP_CONVE_VEHICLEAREA
    (VEHICLE_AREA, PLATE_NUM, RN)
    SELECT *
      FROM (SELECT T.VEHICLE_AREA,
                   T.PLATE_NUM,
                   ROW_NUMBER() OVER(PARTITION BY PLATE_NUM ORDER BY PLATE_NUM) RN
              FROM TEMP_CONVE_PLATENUM T)
     WHERE RN = 1;
  COMMIT;
END;

--05 修改车辆管理区
MERGE INTO TEMP_RESULT_CYX T
  USING TEMP_CONVE_VEHICLEAREA R
  ON (T.D_VEHICLE_NO = R.PLATE_NUM)
  WHEN MATCHED THEN
    UPDATE SET T.VEHICLE_AREA = R.VEHICLE_AREA;
  COMMIT;

--06 查询结果给用户
SELECT WAYBILL_NO       AS 运单号,
       SRC_ZONE_CODE    AS 始发网点,
       DEST_ZONE_CODE   AS 目的网点,
       ROUTE_INDEX      AS 路由序号,
       BATCH_TYPE       AS 班次类型,
       S_ZONE_CODE      AS 静态网点,
       S_BATCH_CODE     AS 静态班次,
       S_OPT_TM         AS 静态操作时间,
       S_DELIVERY_TM    AS 静态派送时效,
       D_ZONE_CODE      AS 实际网点,
       D_BATCH_CODE     AS 实际班次,
       D_OPT_TM         AS 动态操作时间,
       D_DELIVERY_TM    AS 动态派送时效,
       D_S_OPT          AS 时差,
       D_S_DIFF         AS 时效差值,
       D_VEHICLE_NO     AS 车标号,
       VEHICLE_AREA     AS 车辆管理方,
       D_BAR_OPT_CODE   AS 操作员,
       STAY_WHY_NAME    AS 异常原因,
       EXCEPTION_STATUS AS 异常状态,
       DUTY_STATUS      AS 定责状态
  FROM TEMP_RESULT_CYX
ORDER BY WAYBILL_NO, ROUTE_INDEX;
分享到:
评论

相关推荐

    genesis2000脚本编写4 Genesis内部变量

    脚本会加载这个文件,执行完毕后清除临时文件,以保证环境的整洁。 综合来看,Genesis2000脚本中的info命令和其参数为自动化操作提供了极大的便利,通过这些内定的变量和参数,我们可以有效地提取所需的信息,减少...

    脚本POS解析问题

    FFA149~FFA14D和FFA100~FFA109可能在表格中未定义,FFA170~FFA17F定义为临时变量,但具体含义需要结合业务背景和脚本上下文理解。FFA100等临时变量的作用类似于C语言中的临时变量,它们可能在后续流程中作为数据源。...

    Oracle创建hr用户的脚本

    在实际操作中,HR用户可能还需要具备处理PL/SQL过程、触发器、存储过程等权限,这取决于应用程序的需求。同时,安全性和审计也是重要的考虑因素,DBA可能需要监控和控制HR用户的活动,防止未授权的访问或更改。 ...

    SendSms_调取阿里云短信接口脚本_

    - **密钥管理**:AccessKey ID和AccessKey Secret应妥善保管,避免暴露在代码中,通常建议使用阿里云的RAM服务动态获取临时凭证。 - **手机号码保护**:在处理用户手机号码时,要遵循隐私政策,确保数据安全,不被...

    游戏脚本-钢铁大使 - 波比.zip

    脚本语言的选择取决于游戏引擎和团队的技术栈。这些脚本会与游戏引擎紧密集成,使得非编程背景的设计人员也能通过图形化界面来创建和修改游戏逻辑。 在描述中提到的“游戏小脚本”,可能指的是一个较小规模或特定...

    Oracle10g开闭脚本_v1.0.0

    5. **pre_start_checks.sql** 和 **post_stop_tasks.sql**:启动前的检查和停止后的清理任务,这些脚本可能包含了对硬件、系统资源、日志文件等的检查,以及关闭后的一些善后工作,比如清理临时文件、更新维护记录等...

    opencv各版本编译自动化脚本

    1. **下载依赖**:脚本首先会检查并下载必要的依赖库,这些可能包括编译工具(如cmake)、库文件(如libjpeg、libpng等)、以及特定的计算机视觉相关库(如FFmpeg、CUDA等,取决于OpenCV版本和配置选项)。...

    WinCE脚本解析程序(写写文本就能做很多意想不到的事情)

    4. 支持从文件读入并作为参数的方式(即配置文件中嵌入其它文件,嵌套层数无限制,一般为临时创建的文件,一些不确定参数可以先保存到临时文件,再用此程序读取)。参考特殊说明。5. 支持VB代码嵌入,方便变量使用、...

    usb偷取资料

    ### USB偷取资料的技术背景 USB(通用串行总线)是一种广泛应用于个人电脑和移动设备上的接口标准,用于连接各种外部设备。随着USB设备的普及,它也成为了一种被黑客利用进行恶意活动的重要工具之一。本节将围绕...

    shell脚本实现随机生成10个8位密码

    3. `head -c 500 /dev/urandom`:从设备 `/dev/urandom` 读取500个随机字节,`/dev/urandom` 是一个伪随机数生成器,提供了无限量的随机数据。 4. `tr -dc a-zA-Z` 和 `tr -dc a-z0-9A-Z`:这两个命令用于过滤字符集...

    linuxshell脚本学习笔记文.pdf

    `exit`命令可以指定脚本的退出状态,超过255后会取除256后的余数。 `if-then`语句是控制流程的关键,当`command1`的退出状态为0时,执行`commands2`。如果`command1`失败,可以使用`else`分支执行`commands3`。`if-...

    经典批处理程序(BAT脚本)

    - 系统维护:清理临时文件、注册表清理、系统信息收集等。 - 软件安装自动化:自动执行安装程序,设定参数,甚至进行无人值守安装。 批处理虽然简单,但功能强大,是系统管理员和日常用户进行自动化工作的重要...

    执行命令清理C盘无用文件.zip

    3. 脚本运行过程中,系统会自动执行一系列清理命令,如清理临时文件、系统日志、预读取文件等。 4. 脚本执行完毕后,可能会提示重启电脑以完成清理。根据提示操作即可。 使用脚本清理C盘时需要注意以下几点: 1. *...

    JavaCardApplet开发调试及测试脚本的编写执行.pdf

    例如,对于随机数生成的测试,可以编写一个APDU脚本来发送上述取随机数的命令,并检查返回的随机数是否符合预期。 5. **执行测试脚本**: - 测试脚本可以是文本文件,包含一系列APDU指令,通过模拟器或连接的智能...

    Sqlserver2000经典脚本

    限制列数的交叉表.sql │ ├─第07章 │ │ 7.1 splitpage.asp │ │ 7.2.1 TOP n 实现的通用分页存储过程.sql │ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql │ │ 7.2.3 临时表...

    Shell脚本把文件从GBK转为UTF-8编码

    在计算机领域,文本编码是处理...需要注意的是,转换过程中可能会丢失无法映射的字符,这取决于`iconv`命令的选项设置。在实际使用时,确保备份原始文件以防数据丢失,同时要了解字符编码的差异,以避免不必要的问题。

    易语言取随机进程名

    在易语言中,“取随机进程名”是一个常见的功能,用于生成一个随机的进程名称,这在某些应用场景下非常有用,比如编写测试脚本、创建临时进程或进行安全相关的程序设计。 首先,我们要理解“进程名”是什么。在操作...

    修改MYSQL最大连接数的3种方法

    - 上述命令将最大连接数临时设置为200。需要注意的是,这个设置只对当前会话有效,不会影响其他已存在的连接。 3. **查看当前状态**: - 可以通过查询 `SHOW VARIABLES LIKE 'max_connections';` 来验证设置是否...

    取NC三大报表数据方法

    ### 取NC三大报表数据方法 #### 背景与目的 在企业信息化管理中,为了更好地集成不同系统之间的数据,通常需要将某些关键报表的数据提取出来并传递给其他系统进行进一步处理或分析。本篇内容主要介绍了如何从NC...

    Shell创建用户并生成随机密码脚本分享

    例如,使用`head -1`命令获取其前一个字节,然后通过`md5sum`命令计算哈希值,最后取前8个字符作为随机密码的一部分。另外,Linux环境变量`$RANDOM`也可以用来生成随机整数,但它的范围是0到32767,若需要特定长度的...

Global site tag (gtag.js) - Google Analytics