SELECT 'Rows updated:',COUNT(1) FROM (SELECT 1 FROM DELTA.PRMCN WHERE ETL_FLAG IN ('A','D')) S;

--重跑:删除已跑入数据
DELETE FROM CCRD.PRMCN WHERE JOB_SEQ_ID= New_JOB_SEQ_ID; --重跑:从历史表恢复数据
INSERT INTO CCRD.PRMCN(CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID)
select CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID
from ODSHIS.PRMCN WHERE NEW_JOB_SEQ_ID= New_JOB_SEQ_ID; --重跑:删除已跑入历史数据
DELETE FROM ODSHIS.PRMCN WHERE NEW_JOB_SEQ_ID= New_JOB_SEQ_ID; --备份数据到历史表
SELECT 'Rows readed:',COUNT(1),'Rows changed:',COUNT(1) FROM (SELECT 1 FROM DELTA.PRMCN WHERE ETL_FLAG IN ('I','A','D')) S;
SELECT 'Rows updated:',COUNT(1) FROM NEW TABLE (
INSERT INTO ODSHIS.PRMCN(CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID,NEW_JOB_SEQ_ID)
select CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID,New_JOB_SEQ_ID
from CCRD.PRMCN T
WHERE T.END_DT='9999-12-31' AND EXISTS ( SELECT 1 FROM DELTA.PRMCN S
WHERE T.CATEGORY=S.CATEGORY )
); --断链
MERGE INTO CCRD.PRMCN T
USING (SELECT * FROM DELTA.PRMCN WHERE ETL_FLAG IN ('I','D','A')) S
ON T.CATEGORY=S.CATEGORY AND T.END_DT='9999-12-31'
WHEN MATCHED THEN UPDATE SET
T.END_DT='#DATEOFDATA#', T.JOB_SEQ_ID= New_JOB_SEQ_ID; --加链
INSERT INTO CCRD.PRMCN(CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID)
select CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,'#DATEOFDATA#','9999-12-31',New_JOB_SEQ_ID
from DELTA.PRMCN where ETL_FLAG in ('A','I'); --保持数据完整性
MERGE INTO CCRD.PRMCN T
USING (SELECT * FROM DELTA.PRMCN WHERE ETL_FLAG = 'D' ) S
ON T.CATEGORY=S.CATEGORY
WHEN NOT MATCHED THEN
INSERT (CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,EFF_DT,END_DT,JOB_SEQ_ID)
VALUES (CATEGORY,CATE_DESC,CURR_NUM2,PROC_DAYS,BRANCH,PDCAT_FLAG,'#DATEOFDATA#','#DATEOFDATA#',New_JOB_SEQ_ID);

以上就是对数据进行做拉链加载

AP_MergeSql的更多相关文章

随机推荐

  1. node与vue结合的前后端分离跨域问题

    第一点:node作为服务端提供数据接口,vue使用axios访问接口, 安装axios npm install axios --save 安装完成后在main.js中增加一下配置: import ax ...

  2. 初识python notes

    python数据类型 数字 字符串 列表 元祖 字典 1.为什么要编程 编程的目的是解放人力,这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介 ...

  3. nginx upstream的几种配置方式

    nginx 的upstream目前支持4种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器 ,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weigh ...

  4. Linux常用的编辑保存退出命令

    Vi Vim进入编辑后退出 按ESC后 1.保存退出 :wq :x 最快捷的方法:直接按shift+zz,或者切换到大写模式按ZZ,就可以保存退出了,即是按2下大写的Z.区别::wq 强制性写入文件并 ...

  5. [Python Study Notes]七彩散点图绘制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  6. python爬虫框架(2)--PySpider框架安装配置

    1.安装 1.phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速.原生支持各种Web标准:DOM 处理 ...

  7. js中的操作符

    写在前面 js语法 DOM对象(把body,div,p等节点树看成一个对象) BOM对象(把浏览器的地址栏历史记录DOM等装在一个对象) 浏览器是宿主,但js的宿主不限于浏览器,也可以是服务器,如no ...

  8. android手势(gesture)

    需要实现两个接口,OnTouchListener ,OnGestureListener 在接口方法中实现各种事件 详见:http://www.cnblogs.com/JczmDeveloper/p/3 ...

  9. [patl2-018]多项式A除以B

    解题关键:多项式除法的模拟. #include<cstdio> #include<cstring> #include<algorithm> #include< ...

  10. 深入浅出Javascript事件循环机制

    一.JS单线程.异步.同步概念 众所周知,JS是单线程(如果一个线程删DOM,一个线程增DOM,浏览器傻逼了-所以只能单着了),虽然有webworker酱紫的多线程出现,但也是在主线程的控制下.web ...