理赔qxp.sql 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. ---------------------保单数据处理
  2. --创建保险理赔表insuranceclaimthread
  3. DROP TABLE IF EXISTS insuranceclaimthread;
  4. CREATE TABLE insuranceclaimthread(
  5. icthreadid string NOT NULL COMMENT '保险理赔Id',
  6. crno string DEFAULT NULL COMMENT '立案号',
  7. companyno string DEFAULT NULL COMMENT '公司代码',
  8. policyno string NOT NULL COMMENT '保险单号 INSURANCE_CLAIM.CONTNO',
  9. applicantid string DEFAULT NULL COMMENT '投保人ID',
  10. appname string DEFAULT NULL COMMENT '投保人名称',
  11. appphone string DEFAULT NULL COMMENT '投保人手机',
  12. appcertid string DEFAULT NULL COMMENT '投保人证件号码 INSURANCE_CLAIM.RISKDATE',
  13. cnno string DEFAULT NULL COMMENT '报案号',
  14. losstime date DEFAULT NULL COMMENT '损失发生时间',
  15. rpid string DEFAULT NULL COMMENT '报案人',
  16. rpname string DEFAULT NULL COMMENT '报案人名称',
  17. rpphone string DEFAULT NULL COMMENT '报案人电话',
  18. lpid string DEFAULT NULL COMMENT '出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  19. lpname string DEFAULT NULL COMMENT '出险人名称',
  20. cndate date DEFAULT NULL COMMENT '报案日期 INSURANCE_CLAIM.RPTDATE',
  21. lossdescribe string DEFAULT NULL COMMENT '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  22. crdate date DEFAULT NULL COMMENT '立案日期 INSURANCE_CLAIM.RGTDATE',
  23. cndescribe string DEFAULT NULL COMMENT '报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  24. claimstatus string DEFAULT NULL COMMENT '理赔状态 案件的状态,例如:录入、已立案等',
  25. csdate date DEFAULT NULL COMMENT '理赔状态日期',
  26. relationship string DEFAULT NULL COMMENT '报案人与出险人关系',
  27. ccno1 string DEFAULT NULL COMMENT '赔案号1 AUDIT_CLAIM_INSURANCE.CLMNO',
  28. ccstatus1 string DEFAULT NULL COMMENT '赔案状态1',
  29. ccsdate1 date DEFAULT NULL COMMENT '赔案状态日期1',
  30. productid1 string DEFAULT NULL COMMENT '险种代码1 INSURANCE_CLAIM_HEALTH.RISKCODE',
  31. ccamt1 double DEFAULT NULL COMMENT '赔付金额1 INSURANCE_CLAIM_HEALTH.REALPAY',
  32. ccno2 string DEFAULT NULL COMMENT '赔案号2',
  33. ccstatus2 string DEFAULT NULL COMMENT '赔案状态2',
  34. ccsdate2 date DEFAULT NULL COMMENT '赔案状态日期2',
  35. productid2 string DEFAULT NULL COMMENT '险种代码2',
  36. ccamt2 double DEFAULT NULL COMMENT '赔付金额2',
  37. branchcode string DEFAULT NULL COMMENT '机构代码',
  38. claimcasestatus string DEFAULT NULL COMMENT '案件状态INSURANCE_CLAIM_HEALTH.LLCLAIMSTATE',
  39. created_by string DEFAULT NULL COMMENT '',
  40. created_time date DEFAULT NULL COMMENT '',
  41. updated_by string DEFAULT NULL COMMENT '',
  42. updated_time date DEFAULT NULL COMMENT ''
  43. )
  44. COMMENT '保险理赔'
  45. STORED AS ES
  46. with shard number 10
  47. replication 1;
  48. DROP TABLE IF EXISTS insuranceclaimthread_tmp;
  49. CREATE TABLE insuranceclaimthread_tmp(
  50. contno string NOT NULL COMMENT '保单号',
  51. rownumber int not null comment '同保单号 按照出险日期倒叙排列的行号',
  52. CLMNO string NOT NULL COMMENT '赔案号',
  53. LPID string DEFAULT NULL COMMENT '出险人客户号',
  54. LPName string DEFAULT NULL COMMENT '出险人名称',
  55. scustid string NOT NULL COMMENT '出险人上游客户id',
  56. rptdate date DEFAULT NULL COMMENT '报案日期',
  57. rgtdate date DEFAULT NULL COMMENT '立案日期',
  58. riskdate date DEFAULT NULL COMMENT '出险日期',
  59. lloccurreason string DEFAULT NULL COMMENT '出险原因', -- dialect: ORACLE
  60. accidentdetail string DEFAULT NULL COMMENT '意外细节', -- dialect: ORACLE
  61. llclaimstate string DEFAULT NULL COMMENT '目前状态', -- dialect: ORACLE
  62. riskcode string DEFAULT NULL COMMENT '险种代码',
  63. realpay double DEFAULT NULL COMMENT '赔付金额'
  64. )
  65. COMMENT 'insuranceclaimthread临时表'
  66. CLUSTERED BY (contno) INTO 1 BUCKETS
  67. STORED AS ORC
  68. TBLPROPERTIES ("transactional"="true");
  69. ------------------------------------------------------------------------------------------------------------------------------------------
  70. CREATE OR REPLACE PROCEDURE insuranceclaimthread_main() -- 创建主存储过程
  71. IS
  72. BEGIN
  73. --1.获取主要信息插入主表 如保单号 客户名称
  74. init_insuranceclaimthread()
  75. --2.更新 投保人相关信息
  76. EXCEPTION
  77. WHEN HIVE_EXCEPTION THEN
  78. log_exception('insuranceclaimthread_main',sqlerrm(),sqlcode())
  79. WHEN Others THEN
  80. log_exception('insuranceclaimthread_main',sqlerrm(),sqlcode())
  81. END;
  82. ----------------------利用insuranceinfo 插入或更新信息临时表
  83. CREATE OR REPLACE PROCEDURE init_insuranceclaimthread() -- 创建存储过程
  84. IS
  85. BEGIN
  86. delete insuranceclaimthread_tmp;
  87. --插入主要信息
  88. insert into insuranceclaimthread_tmp(
  89. contno,-- '保单号',
  90. rownumber ,--'同保单号 按照出险日期倒叙排列的行号',
  91. CLMNO ,-- '赔案号',
  92. scustid ,--'上游客户号'
  93. LPName ,--出险人名称
  94. rptdate ,--'报案日期',
  95. rgtdate ,--'立案日期',
  96. riskdate ,--'出险日期',
  97. lloccurreason ,-- '出险原因', -- dialect: ORACLE
  98. accidentdetail ,-- '意外细节', -- dialect: ORACLE
  99. llclaimstate ,-- '目前状态', -- dialect: ORACLE
  100. riskcode ,-- '险种代码',
  101. realpay -- '赔付金额'
  102. )
  103. select
  104. contno,
  105. row_number()over(PARTITION BY contno ORDER BY riskdate desc),
  106. CLMNO,
  107. insuredno,
  108. insuredname,
  109. rptdate ,--'报案日期',
  110. rgtdate ,--'立案日期',
  111. riskdate ,--'出险日期',
  112. lloccurreason ,-- '出险原因', -- dialect: ORACLE
  113. accidentdetail ,-- '意外细节', -- dialect: ORACLE
  114. llclaimstate ,-- '目前状态', -- dialect: ORACLE
  115. riskcode ,-- '险种代码',
  116. realpay -- '赔付金额'
  117. from shanghailifeecif.insurance_claim
  118. --更新 临时表的客户号
  119. UPDATE insuranceclaimthread_tmp a set LPID = (select indid from scustid_unique_tmp b where a.scustid = b.scustid ) WHERE 1=1;
  120. --插入 最近的
  121. insert into insuranceclaimthread (
  122. icthreadid , -- '保险理赔Id',
  123. policyno ,--'保险单号 INSURANCE_CLAIM.CONTNO',
  124. lpid ,--'出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  125. lpname ,--'出险人名称',
  126. losstime ,-- '损失发生时间',
  127. cndate ,-- '报案日期 INSURANCE_CLAIM.RPTDATE',
  128. crdate ,-- '立案日期 INSURANCE_CLAIM.RGTDATE',
  129. lossdescribe ,-- '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  130. cndescribe ,-- '报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  131. claimstatus ,--'理赔状态 案件的状态,例如:录入、已立案等',
  132. ccno1 ,--'赔案号1 AUDIT_CLAIM_INSURANCE.CLMNO',
  133. ccstatus1 ,-- '赔案状态1',
  134. productid1 ,--'险种代码1 INSURANCE_CLAIM_HEALTH.RISKCODE',
  135. ccamt1 ,--'赔付金额1 INSURANCE_CLAIM_HEALTH.REALPAY',
  136. created_by ,
  137. created_time
  138. ) select
  139. row_number()over(),
  140. contno,
  141. lpid,
  142. lpname,
  143. riskdate,
  144. rptdate,
  145. rgtdate,
  146. lloccurreason ,-- '出险原因', -- dialect: ORACLE
  147. accidentdetail ,-- '意外细节', -- dialect: ORACLE
  148. llclaimstate ,-- '目前状态', -- dialect: ORACLE
  149. CLMNO ,
  150. llclaimstate,
  151. riskcode ,-- '险种代码',
  152. realpay, -- '赔付金额'
  153. 'admin',
  154. sysdate()
  155. from insuranceclaimthread_tmp
  156. where rownumber =1;
  157. --更新第二近的
  158. update insuranceclaimthread a set (
  159. ccno2,--'赔案号1 AUDIT_CLAIM_INSURANCE.CLMNO',
  160. ccstatus2 ,-- '赔案状态1',
  161. productid2 ,--'险种代码1 INSURANCE_CLAIM_HEALTH.RISKCODE',
  162. ccamt2 --'赔付金额1 INSURANCE_CLAIM_HEALTH.REALPAY',
  163. ) = (
  164. select
  165. CLMNO ,
  166. llclaimstate,
  167. riskcode ,-- '险种代码',
  168. realpay -- '赔付金额'
  169. from insuranceclaimthread_tmp b
  170. where b.rownumber =2 and a.policyno = b.contno
  171. )
  172. where 1=1
  173. EXCEPTION
  174. WHEN HIVE_EXCEPTION THEN
  175. log_exception('init_insuranceclaimthread',sqlerrm(),sqlcode())
  176. WHEN Others THEN
  177. log_exception('init_insuranceclaimthread',sqlerrm(),sqlcode())
  178. END;
  179. ====================================================================================================================
  180. =============================================数据查询语句============================================================
  181. ====================================================================================================================
  182. --contno 保单号
  183. SELECT count(1) FROM (
  184. select contno from shanghailifeecif.insurance_claim group by contno
  185. ); 11521
  186. 11490
  187. --contno 保单号
  188. SELECT count(1) FROM (
  189. select contno,insuredname,insuredno from shanghailifeecif.insurance_claim group by contno,insuredname,insuredno
  190. );
  191. select contno,count(contno) a from shanghailifeecif.insurance_claim group by contno ORDER BY a DESC;
  192. SELECT * FROM shanghailifeecif.insurance_claim WHERE contno = 2019101200159088;
  193. SELECT * FROM shanghailifeecif.insurance_claim WHERE contno = 2018122000202088;
  194. select CLMNO,count(CLMNO) a from shanghailifeecif.insurance_claim group by CLMNO ORDER BY a DESC;
  195. SELECT count(1) FROM (
  196. select contno,CLMNO from shanghailifeecif.insurance_claim group by contno,CLMNO
  197. );
  198. SELECT * FROM shanghailifeecif.insurance_claim WHERE CLMNO = 3631815101227631;