个体关系存储过程.sql 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. DROP TABLE IF EXISTS shanglifeecif.indrelationship_tmp;
  2. CREATE TABLE shanglifeecif.indrelationship_tmp(
  3. id string DEFAULT NULL COMMENT 'id',
  4. rstype string DEFAULT NULL COMMENT '关系类型 其他、配偶、祖父母、外祖父母、祖孙、外祖孙、本人、父母子女',
  5. indid1 string DEFAULT NULL COMMENT '个体1',
  6. scustid1 string DEFAULT NULL COMMENT '个体1上游客户号',
  7. name1 string DEFAULT NULL COMMENT '个体1名称',
  8. sex1 string DEFAULT NULL COMMENT '个体性别1',
  9. mphone1 string DEFAULT NULL COMMENT '个体1手机',
  10. idcard1 string DEFAULT NULL COMMENT '个体1证件号码',
  11. role1 string DEFAULT NULL COMMENT '个体1角色 父亲、母亲、儿子、女儿、妻子、丈夫',
  12. indid2 string DEFAULT NULL COMMENT '个体2',
  13. scustid2 string DEFAULT NULL COMMENT '个体2上游客户号',
  14. name2 string DEFAULT NULL COMMENT '个体2名称',
  15. sex2 string DEFAULT NULL COMMENT '个体性别2',
  16. mphone2 string DEFAULT NULL COMMENT '个体2手机',
  17. idcard2 string DEFAULT NULL COMMENT '个体2证件号码',
  18. role2 string DEFAULT NULL COMMENT '个体2角色 父亲、母亲、儿子、女儿、妻子、丈夫',
  19. rsstime timestamp DEFAULT NULL COMMENT '开始时间',
  20. rsetime timestamp DEFAULT NULL COMMENT '结束时间'
  21. )
  22. COMMENT '个体关系临时表'
  23. stored as ES
  24. with shard number 10
  25. replication 1;
  26. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_tmp( )
  27. IS
  28. DECLARE
  29. strsql string
  30. BEGIN
  31. --删除数据
  32. DELETE shanglifeecif.indrelationship_tmp;
  33. --插入数据
  34. INSERT INTO shanglifeecif.indrelationship_tmp(
  35. id,
  36. RSType,
  37. SCustID1,
  38. Name1,
  39. sex1,
  40. IDCard1,
  41. Role1,
  42. SCustID2,
  43. Name2,
  44. sex2,
  45. IDCard2,
  46. RSSTime,
  47. Role2
  48. )
  49. SELECT
  50. row_number()over() AS IRSID,
  51. max(RELATIONTOAPPNT) AS RSType,
  52. CUSTOMERNO AS IndID1,
  53. max(NAME) AS Name1,
  54. max(sex) AS sex1,
  55. max(IDNO) AS IDCard1,
  56. CASE max(RELATIONTOAPPNT)
  57. WHEN '子女'
  58. THEN CASE max(sex)
  59. WHEN 1 THEN '母亲'
  60. WHEN 0 THEN '父亲'
  61. END
  62. WHEN '父母'
  63. THEN CASE max(sex)
  64. WHEN 1 THEN '女儿'
  65. WHEN 0 THEN '儿子'
  66. END
  67. WHEN '配偶'
  68. THEN CASE max(sex)
  69. WHEN 1 THEN '妻子'
  70. WHEN 0 THEN '丈夫'
  71. END
  72. WHEN '祖父母、外祖父母'
  73. THEN CASE max(sex)
  74. WHEN 1 THEN '(外)孙女'
  75. WHEN 0 THEN '(外)祖孙'
  76. END
  77. WHEN '祖孙、外祖孙'
  78. THEN CASE max(sex)
  79. WHEN 1 THEN '(外)祖母'
  80. WHEN 0 THEN '(外)祖父'
  81. END
  82. ELSE max(RELATIONTOAPPNT)
  83. END AS Role1,
  84. INSUREDNO AS IndID2,
  85. max(INSUREDNAME) AS Name2,
  86. max(insuredsex) AS sex2,
  87. max(INSUREDIDNO) AS IDCard2,
  88. min(CUSTOMGETPOLDATE) AS RSSTime,
  89. CASE max(RELATIONTOAPPNT)
  90. WHEN '子女'
  91. THEN CASE max(INSUREDSEX)
  92. WHEN 1 THEN '女儿'
  93. WHEN 0 THEN '儿子'
  94. END
  95. WHEN '父母'
  96. THEN CASE max(INSUREDSEX)
  97. WHEN 1 THEN '母亲'
  98. WHEN 0 THEN '父亲'
  99. END
  100. WHEN '配偶'
  101. THEN CASE max(INSUREDSEX)
  102. WHEN 1 THEN '妻子'
  103. WHEN 0 THEN '丈夫'
  104. END
  105. WHEN '祖父母、外祖父母'
  106. THEN CASE max(INSUREDSEX)
  107. WHEN 1 THEN '(外)祖母'
  108. WHEN 0 THEN '(外)祖父'
  109. END
  110. WHEN '祖孙、外祖孙'
  111. THEN CASE max(INSUREDSEX)
  112. WHEN 1 THEN '(外)孙女'
  113. WHEN 0 THEN '(外)祖孙'
  114. END
  115. ELSE max(RELATIONTOAPPNT)
  116. END AS Role2
  117. FROM shanghailifeecif.POLICY_INFORMATION
  118. WHERE RELATIONTOAPPNT<>'本人' AND RELATIONTOAPPNT IS NOT NULL
  119. GROUP BY CUSTOMERNO,INSUREDNO;
  120. --更新临时表的indid1 indid2
  121. UPDATE shanglifeecif.indrelationship_tmp a set indid1 =
  122. (SELECT b.indid FROM (select
  123. indid,row_number() over(partition by scustid) rn ,SCustID
  124. from shanglifeecif.individual) b where a.SCustID1 = b.SCustID AND b.rn = 1);
  125. UPDATE shanglifeecif.indrelationship_tmp a set indid2 =
  126. (SELECT b.indid FROM (select
  127. indid,row_number() over(partition by scustid) rn ,SCustID
  128. from shanglifeecif.individual) b where a.SCustID2 = b.SCustID AND b.rn = 1);
  129. END;
  130. /
  131. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship( )
  132. IS
  133. DECLARE
  134. BEGIN
  135. DELETE FROM shanglifeecif.indrelationship;
  136. --插入数据
  137. INSERT INTO shanglifeecif.indrelationship(
  138. IRSID, --'个体关系ID'
  139. RSType, --'关系类型 其他、配偶、祖父母、外祖父母、祖孙、外祖孙、本人、父母子女' ,
  140. IndID1, --'个体1' ,
  141. Name1, --个体1名称
  142. IDCard1, --个体1证件号码
  143. Role1,--个体1角色 父亲、母亲、儿子、女儿、妻子、丈夫
  144. IndID2,--个体2
  145. Name2,--个体2名称 sex2,--个体2手机
  146. IDCard2,--个体2证件号码
  147. Role2,--个体2角色 父亲、母亲、儿子、女儿、妻子、丈夫
  148. RSSTime,--开始时间
  149. CREATED_BY,--创建人
  150. CREATED_TIME--
  151. )
  152. SELECT
  153. id,
  154. RSType,
  155. indid1,
  156. Name1,
  157. IDCard1,
  158. Role1,
  159. indid2,
  160. Name2,
  161. IDCard2,
  162. Role2,
  163. RSSTime,
  164. 'admin',
  165. sysdate
  166. FROM shanglifeecif.indrelationship_tmp where indid1 is not null and indid2 is not null
  167. END;