存储过程.sql 126 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194
  1. -- saveed on 2022-08-24
  2. CREATE OR REPLACE PROCEDURE shanglifeecif.age_sex_distribution() IS
  3. DECLARE
  4. BEGIN
  5. UPDATE shanglifeecif.Individual si1 SET si1.label4 = (SELECT CASE WHEN temp.age>=0 AND temp.age<13 THEN '儿童' WHEN temp.age>=13 AND temp.age <19 THEN '少年' WHEN temp.age >=19 AND temp.age <41 THEN '青年' WHEN temp.age >=41 AND temp.age <66 THEN '中年' ELSE '老年' END FROM (SELECT TRUNC(months_between(sysdate, si2.birthday)/12) age,si2.indid FROM shanglifeecif.Individual si2) temp WHERE temp.indid = si1.indid);
  6. DELETE FROM shanglifeecif.age_sex_distribution;
  7. insert into shanglifeecif.age_sex_distribution (
  8. id,
  9. labelName,
  10. gender,
  11. cusNum
  12. ) SELECT row_number()over(),t.labelName,t.gender,t.cusNum FROM (
  13. SELECT si.label4 labelName,si.gender,count(1) cusNum FROM shanglifeecif.individual si WHERE si.label4 IS NOT null GROUP BY si.label4,si.gender
  14. ) t;
  15. dbms_output.put_line('age_sex_distribution函数跑批完成!');
  16. EXCEPTION
  17. WHEN HIVE_EXCEPTION THEN
  18. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  19. WHEN Others THEN
  20. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  21. END ;
  22. CREATE OR REPLACE PROCEDURE shanglifeecif.bdnum_distribution() IS
  23. DECLARE
  24. BEGIN
  25. --第一步 更新 Individual.NOVPolicy 有效记录数
  26. UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  27. SELECT temp.customerno,count(*) AS cnum FROM (
  28. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  29. ) temp GROUP BY temp.customerno
  30. ) t WHERE t.customerno = si1.scustid);
  31. --第二步 更新 Individual.NOIVPolicy 无效记录数
  32. UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  33. SELECT temp.customerno,count(*) AS cnum FROM (
  34. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  35. ) temp GROUP BY temp.customerno
  36. ) t WHERE t.customerno = si1.scustid);
  37. --第三步
  38. UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  39. CASE
  40. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  41. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  42. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  43. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  44. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  45. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  46. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  47. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  48. END
  49. ) where si1.custtype like '%投保人%';
  50. /*
  51. * 如果某个区间没数据,则bdnum_distribution表中缺少该区间记录,而不是这个区间数是0
  52. DELETE FROM shanglifeecif.bdnum_distribution;
  53. insert into shanglifeecif.bdnum_distribution (
  54. id,
  55. labelName,
  56. bdnum
  57. ) SELECT row_number()over(),t.labelName,t.bdnum FROM (
  58. SELECT si.label25 labelName,count(1) bdnum FROM shanglifeecif.individual si WHERE si.label25 IS NOT null GROUP BY si.label25
  59. ) t;
  60. */
  61. DELETE FROM shanglifeecif.bdnum_distribution;
  62. -- insert时id要保持有序且不重复,重复的话ES会自动驱去重,有序是因为前端需要按照这个顺序排序展示 java程序可以根据id排序
  63. -- 注意:id是按照数字类型排序,所以id必须是整形数字,不能是字母、符号、小数点
  64. insert into shanglifeecif.bdnum_distribution (id, labelName, bdnum) VALUES
  65. ('1', '无保单', '0'),
  66. ('2', '1件', '0'),
  67. ('3', '2件', '0'),
  68. ('4', '3-5件', '0'),
  69. ('5', '6-10件', '0'),
  70. ('6', '11-20件', '0'),
  71. ('7', '21-50件', '0'),
  72. ('8', '50件以上', '0');
  73. UPDATE shanglifeecif.bdnum_distribution b SET bdnum = (
  74. SELECT t.bdnum FROM (
  75. SELECT
  76. CASE
  77. -- individual。label25对应标签信息,标签信息中要展示为'1件保单','2件保单'。而bdnum_distribution对应首页拥有保单件数分布,需要展示为1件,2件
  78. WHEN trim(si.label25) = '1件保单' THEN '1件'
  79. WHEN trim(si.label25) = '2件保单' THEN '2件'
  80. WHEN trim(si.label25) = '3-5件保单' THEN '3-5件'
  81. WHEN trim(si.label25) = '6-10件保单' THEN '6-10件'
  82. WHEN trim(si.label25) = '11-20件保单' THEN '11-20件'
  83. WHEN trim(si.label25) = '21-50件保单' THEN '21-50件'
  84. WHEN trim(si.label25) = '50件保单以上' THEN '50件以上'
  85. ELSE trim(si.label25)
  86. END AS labelName
  87. , count(1) bdnum
  88. FROM shanglifeecif.individual si
  89. WHERE si.label25 IS NOT NULL GROUP BY si.label25
  90. ) t
  91. WHERE b.labelName = t.labelName
  92. );
  93. dbms_output.put_line('bdnum_distribution函数跑批完成!');
  94. EXCEPTION
  95. WHEN HIVE_EXCEPTION THEN
  96. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  97. WHEN Others THEN
  98. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  99. END ;
  100. CREATE OR REPLACE PROCEDURE shanglifeecif.bdnum_distribution_channel() IS
  101. DECLARE
  102. BEGIN
  103. --第一步 更新 Individual.NOVPolicy 有效记录数
  104. UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  105. SELECT temp.customerno,count(*) AS cnum FROM (
  106. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  107. ) temp GROUP BY temp.customerno
  108. ) t WHERE t.customerno = si1.scustid);
  109. --第二步 更新 Individual.NOIVPolicy 无效记录数
  110. UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  111. SELECT temp.customerno,count(*) AS cnum FROM (
  112. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  113. ) temp GROUP BY temp.customerno
  114. ) t WHERE t.customerno = si1.scustid);
  115. --第三步
  116. UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  117. CASE
  118. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  119. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  120. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  121. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  122. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  123. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  124. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  125. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  126. END
  127. ) where si1.custtype like '%投保人%';
  128. DELETE FROM shanglifeecif.bdnum_distribution_channel;
  129. insert into shanglifeecif.bdnum_distribution_channel (
  130. id,
  131. labelName,
  132. bdnum
  133. ) SELECT row_number()over(),t.labelName,t.bdnum FROM (
  134. SELECT si.label25 labelName,count(1) bdnum FROM shanglifeecif.individual si WHERE si.label25 IS NOT null GROUP BY si.label25
  135. ) t;
  136. dbms_output.put_line('bdnum_distribution_channel函数跑批完成!');
  137. EXCEPTION
  138. WHEN HIVE_EXCEPTION THEN
  139. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  140. WHEN Others THEN
  141. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  142. END ;
  143. CREATE OR REPLACE PROCEDURE shanglifeecif.customer_risk_temp()
  144. IS
  145. DECLARE
  146. BEGIN
  147. DELETE FROM shanglifeecif.customer_risk_temp;
  148. INSERT INTO shanglifeecif.customer_risk_temp(
  149. id,
  150. scustid,
  151. name,
  152. gender,
  153. idcard,
  154. birthday,
  155. policyno,
  156. productname,
  157. riskcategoriesname,
  158. risk,
  159. salecom,
  160. salecomname
  161. )
  162. SELECT
  163. row_number()over(),
  164. si.scustid,
  165. si.name,
  166. CASE si.gender
  167. WHEN '0' THEN '男'
  168. WHEN '1' THEN '女'
  169. END AS gender,
  170. si.idcard,
  171. to_char(si.birthday,"yyyy-MM-dd") birthday,
  172. sit.policyno,
  173. sit.productname,
  174. sit.risk_categories_name,
  175. sit.Risk,
  176. sit.policybelong,
  177. sit.salecomname
  178. FROM shanglifeecif.individual si
  179. LEFT JOIN shanglifeecif.insurancearrangement sit ON si.scustid = sit.insuredscustid;
  180. dbms_output.put_line('customer_risk_temp函数跑批完成!');
  181. EXCEPTION
  182. WHEN HIVE_EXCEPTION THEN
  183. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  184. WHEN Others THEN
  185. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  186. END ;
  187. CREATE OR REPLACE PROCEDURE shanglifeecif.customertotaltemp() IS
  188. DECLARE
  189. BEGIN
  190. DELETE FROM shanglifeecif.customertotaltemp;
  191. insert into shanglifeecif.customertotaltemp(
  192. scustid,
  193. name,
  194. gender,
  195. birthday,
  196. idcard,
  197. idtype
  198. )
  199. SELECT
  200. scustid ,
  201. max(name) as name,
  202. max(gender) as gender ,
  203. to_char(max(birthday),"yyyy-MM-dd") birthday,
  204. max(idcard) as idcard,
  205. max(idtype) AS idtype
  206. FROM (
  207. SELECT
  208. trim(customerno) AS scustid,--投保人
  209. trim(name) AS name,
  210. trim(sex) AS gender,
  211. trim(birthday) AS birthday,
  212. trim(idtype) AS idtype ,
  213. trim(idno) AS idcard
  214. FROM
  215. dsj.policy_information
  216. WHERE customerno IS NOT NULL
  217. UNION
  218. SELECT
  219. trim(insuredno) AS scustid,--被保人
  220. trim(insuredname) AS name,
  221. trim(insuredsex) AS gender,
  222. trim(insuredbirthday) AS birthday,
  223. trim(insuredidtype) AS idtype ,
  224. trim(insuredidno) AS idcard
  225. FROM
  226. dsj.policy_information
  227. WHERE insuredno IS NOT NULL
  228. ) tmpTable GROUP BY scustid;
  229. UPDATE shanglifeecif.customertotaltemp sct SET sct.mobile = (SELECT trim(t.MOBILE) FROM dsj.t_customer_class t WHERE sct.scustid=t.customer_id);
  230. dbms_output.put_line('customertotaltemp函数跑批完成!');
  231. EXCEPTION
  232. WHEN HIVE_EXCEPTION THEN
  233. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  234. WHEN Others THEN
  235. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  236. END ;
  237. CREATE OR REPLACE PROCEDURE shanglifeecif.data_cleaning() -- 创建主存储过程
  238. IS
  239. DECLARE
  240. BEGIN
  241. --姓名 sametype:3
  242. INSERT INTO shanglifeecif.samecustomer(
  243. sid,
  244. scustid,
  245. name,
  246. gender,
  247. birthday,
  248. idcard,
  249. OtherIdNumber,
  250. sameType
  251. )
  252. SELECT
  253. reflect("java.util.UUID", "randomUUID"),
  254. t.customer_id,
  255. t.customer_name,
  256. t.gender,
  257. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  258. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  259. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  260. 3
  261. FROM dsj.t_customer_class t WHERE t.customer_name RLIKE '^.*[!$^|\=`]{1,}.*$' OR t.customer_name RLIKE '^.*[0-9]{1,}.*$' ;
  262. --性别 sametype:4
  263. INSERT INTO shanglifeecif.samecustomer(
  264. sid,
  265. scustid,
  266. name,
  267. gender,
  268. birthday,
  269. idcard,
  270. OtherIdNumber,
  271. sameType
  272. )
  273. SELECT
  274. reflect("java.util.UUID", "randomUUID"),
  275. t.customer_id,
  276. t.customer_name,
  277. t.gender,
  278. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  279. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  280. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  281. 4
  282. FROM dsj.t_customer_class t WHERE t.gender IS NULL AND t.customer_id IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.sex IS null );
  283. --证件号码 sametype:6
  284. INSERT INTO shanglifeecif.samecustomer(
  285. sid,
  286. scustid,
  287. name,
  288. gender,
  289. birthday,
  290. idcard,
  291. sameType
  292. )
  293. SELECT
  294. reflect("java.util.UUID", "randomUUID"),
  295. si.scustid,
  296. si.name,
  297. si.gender,
  298. si.birthday,
  299. si.idcard,
  300. 6
  301. FROM shanglifeecif.individual si WHERE length(si.idcard)<18 AND si.custtype LIKE '%投保人%' AND si.idcard IS NOT null;
  302. --出生日期 sametype:7
  303. INSERT INTO shanglifeecif.samecustomer(
  304. sid,
  305. scustid,
  306. name,
  307. gender,
  308. birthday,
  309. idcard,
  310. OtherIdNumber,
  311. sameType
  312. )
  313. SELECT
  314. reflect("java.util.UUID", "randomUUID"),
  315. t.customer_id,
  316. t.customer_name,
  317. t.gender,
  318. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  319. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  320. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  321. 7
  322. FROM dsj.t_customer_class t WHERE t.birthdate IS NULL AND t.customer_id IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.birthday IS null UNION SELECT i.insuredno FROM dsj.policy_information i WHERE i.insuredbirthday IS null);
  323. --手机号 sametype:8
  324. INSERT INTO shanglifeecif.samecustomer(
  325. sid,
  326. scustid,
  327. name,
  328. gender,
  329. birthday,
  330. idcard,
  331. OtherIdNumber,
  332. mobile,
  333. sameType
  334. )
  335. SELECT
  336. reflect("java.util.UUID", "randomUUID"),
  337. t.customer_id,
  338. t.customer_name,
  339. t.gender,
  340. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  341. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  342. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  343. t.mobile,
  344. 8
  345. FROM dsj.t_customer_class t WHERE t.mobile NOT RLIKE '^1[0-9]{10}$' AND t.customer_id IN (SELECT p.customerno FROM dsj.policy_information p);
  346. --邮编 sametype:9
  347. INSERT INTO shanglifeecif.samecustomer(
  348. sid,
  349. scustid,
  350. name,
  351. gender,
  352. birthday,
  353. idcard,
  354. zipcode,
  355. sameType
  356. )
  357. SELECT
  358. reflect("java.util.UUID", "randomUUID"),
  359. si.scustid,
  360. si.name,
  361. si.gender,
  362. si.birthday,
  363. si.idcard,
  364. si.zipcode,
  365. 9
  366. FROM shanglifeecif.individual si WHERE (length(si.zipcode)>0 and length(si.zipcode)<6) OR length(si.zipcode)>6;
  367. --主被保险人性别异常数据 sametype:11
  368. INSERT INTO shanglifeecif.samecustomer(
  369. sid,
  370. scustid,
  371. name,
  372. gender,
  373. birthday,
  374. idcard,
  375. OtherIdNumber,
  376. sameType
  377. )
  378. SELECT
  379. reflect("java.util.UUID", "randomUUID"),
  380. t.customer_id,
  381. t.customer_name,
  382. t.gender,
  383. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  384. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  385. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  386. 11
  387. FROM dsj.t_customer_class t WHERE (t.gender IS NULL OR t.gender = '2') AND t.customer_id IN (SELECT p.insuredno FROM dsj.policy_information p WHERE p.insuredsex IS null);
  388. --邮箱 sametype:14
  389. INSERT INTO shanglifeecif.samecustomer(
  390. sid,
  391. scustid,
  392. name,
  393. gender,
  394. birthday,
  395. idcard,
  396. OtherIdNumber,
  397. email,
  398. sameType
  399. )
  400. SELECT
  401. reflect("java.util.UUID", "randomUUID"),
  402. t.customer_id,
  403. t.customer_name,
  404. t.gender,
  405. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  406. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  407. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  408. t.email,
  409. 14
  410. FROM dsj.t_customer_class t WHERE t.email not RLIKE '^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$' AND t.customer_id IN (SELECT p.customerno FROM dsj.policy_information p UNION SELECT pi.insuredno FROM dsj.policy_information pi);
  411. --主被保险人手机异常数据 sametype:16
  412. INSERT INTO shanglifeecif.samecustomer(
  413. sid,
  414. scustid,
  415. name,
  416. gender,
  417. birthday,
  418. idcard,
  419. OtherIdNumber,
  420. mobile,
  421. sameType
  422. )
  423. SELECT
  424. reflect("java.util.UUID", "randomUUID"),
  425. t.customer_id,
  426. t.customer_name,
  427. t.gender,
  428. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  429. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  430. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  431. t.mobile,
  432. 16
  433. FROM dsj.t_customer_class t WHERE t.mobile NOT RLIKE '^1[0-9]{10}$' AND t.customer_id IN (SELECT p.insuredno FROM dsj.policy_information p);
  434. --主被保险人证件号码 sametype:17
  435. INSERT INTO shanglifeecif.samecustomer(
  436. sid,
  437. scustid,
  438. name,
  439. gender,
  440. birthday,
  441. idcard,
  442. sameType
  443. )
  444. SELECT
  445. reflect("java.util.UUID", "randomUUID"),
  446. si.scustid,
  447. si.name,
  448. si.gender,
  449. si.birthday,
  450. si.idcard,
  451. 17
  452. FROM shanglifeecif.individual si WHERE length(si.idcard)<18 AND si.custtype LIKE '%被保人%' AND si.idcard IS NOT null;
  453. --业务员没错 sametype:18
  454. INSERT INTO shanglifeecif.samecustomer(
  455. sid,
  456. scustid,
  457. name,
  458. gender,
  459. birthday,
  460. idcard,
  461. OtherIdNumber,
  462. agentname,
  463. sameType
  464. )
  465. SELECT
  466. reflect("java.util.UUID", "randomUUID"),
  467. t.customer_id,
  468. t.customer_name,
  469. t.gender,
  470. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  471. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  472. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  473. p.agentname,
  474. 18
  475. FROM dsj.t_customer_class t,dsj.policy_information p WHERE t.customer_id = p.customerno and p.agentname not RLIKE '^[\u4e00-\u9fa5]|[^\x00-\xff]$';
  476. --业绩归属 sametype:19
  477. INSERT INTO shanglifeecif.samecustomer(
  478. sid,
  479. scustid,
  480. name,
  481. gender,
  482. birthday,
  483. idcard,
  484. OtherIdNumber,
  485. salecomname,
  486. sameType
  487. )
  488. SELECT
  489. reflect("java.util.UUID", "randomUUID"),
  490. t.customer_id,
  491. t.customer_name,
  492. t.gender,
  493. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  494. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  495. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  496. p.salecomname,
  497. 19
  498. FROM dsj.t_customer_class t,dsj.policy_information p WHERE t.customer_id = p.customerno and p.salecomname not RLIKE '^[\u4e00-\u9fa5]|[^\x00-\xff]$';
  499. dbms_output.put_line('data_cleaning函数跑批完成!');
  500. END;
  501. CREATE OR REPLACE PROCEDURE shanglifeecif.effective_customer() -- 创建主存储过程
  502. IS
  503. DECLARE
  504. scount int
  505. BEGIN
  506. DELETE FROM shanglifeecif.effectivecustomer WHERE fadateY = to_char(SYSDATE,"yyyy");
  507. INSERT INTO shanglifeecif.effectivecustomer(
  508. esid,
  509. fadateY,
  510. custclass,
  511. cnum
  512. )
  513. SELECT
  514. to_char(SYSDATE,"yyyy")||si.custclass,
  515. to_char(SYSDATE,"yyyy"),
  516. si.custclass,
  517. count(*) AS cnum
  518. FROM
  519. shanglifeecif.individual si WHERE si.Label91 IS NULL AND si.custclass IS NOT NULL AND si.custclass <> '0' GROUP BY si.custclass;
  520. dbms_output.put_line('effective_customer函数跑批完成!');
  521. EXCEPTION
  522. WHEN HIVE_EXCEPTION THEN
  523. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  524. WHEN Others THEN
  525. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  526. END;
  527. CREATE OR REPLACE PROCEDURE shanglifeecif.init_all_individual() -- 初始化所有客户信息
  528. IS
  529. BEGIN
  530. --查询出此次处理的数据并出表中
  531. insert into shanglifeecif.individual (
  532. indid,
  533. custid,
  534. scustid,
  535. name,
  536. gender,
  537. birthday,
  538. idcard,
  539. Passport,
  540. Dlicense,
  541. OtherIdNumber,
  542. created_time,
  543. created_by
  544. ) SELECT
  545. row_number()OVER(ORDER BY sc.scustid),
  546. 'CP'||lpad(row_number()over(ORDER BY sc.scustid),10,'0'),
  547. sc.scustid,
  548. sc.name,
  549. sc.gender,
  550. sc.birthday,
  551. CASE sc.idtype WHEN '0' THEN sc.idcard END AS idcard,
  552. CASE sc.idtype WHEN '1' THEN sc.idcard END AS passport,
  553. CASE sc.idtype WHEN '3' THEN sc.idcard END AS dlicense,
  554. CASE WHEN sc.idtype <> '0' AND sc.idtype <> '1' AND sc.idtype <> '3' THEN sc.idcard END AS otherIdnumber,
  555. sysdate,
  556. 'admin'
  557. FROM shanglifeecif.customertotaltemp sc ORDER BY sc.scustid;
  558. dbms_output.put_line('init_all_individual函数跑批完成!');
  559. EXCEPTION
  560. WHEN HIVE_EXCEPTION THEN
  561. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  562. WHEN Others THEN
  563. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  564. END;
  565. CREATE OR REPLACE PROCEDURE shanglifeecif.init_customerno_salecom_relation() IS
  566. DECLARE
  567. BEGIN
  568. delete from shanglifeecif.customerno_salecom_relation;
  569. -- 用户 渠道关系表
  570. insert into shanglifeecif.customerno_salecom_relation (
  571. indid,
  572. customerno,
  573. salecomname,
  574. salecom,
  575. gender,
  576. label1,
  577. label2,
  578. label3,
  579. label4,
  580. label9,
  581. label10,
  582. label21,
  583. Label67,
  584. Label69,
  585. Label70,
  586. Label71,
  587. Label74,
  588. label77,
  589. Label80,
  590. Label96,
  591. Label97,
  592. Label100,
  593. Label101,
  594. Label103,
  595. Label104,
  596. Label105,
  597. Label106
  598. )
  599. SELECT row_number()OVER(ORDER BY i.scustid), t.customerno , t.salecomname ,t.salecom ,i.gender , i.label1,
  600. i.label2,
  601. i.label3,
  602. i.label4,
  603. i.label9,
  604. i.label10,
  605. i.label21,
  606. i.Label67,
  607. i.Label69,
  608. i.Label70,
  609. i.Label71,
  610. i.Label74,
  611. i.label77,
  612. i.Label80,
  613. i.Label96,
  614. i.Label97,
  615. i.Label100,
  616. i.Label101,
  617. i.Label103,
  618. i.Label104,
  619. i.Label105,
  620. i.Label106 FROM (
  621. SELECT customerno , salecomname ,salecom FROM dsj.POLICY_INFORMATION GROUP BY customerno , salecomname,salecom
  622. ) t , shanglifeecif.individual i WHERE t.customerno = i.scustid;
  623. dbms_output.put_line('init_customerno_salecom_relation 函数跑批完成!');
  624. EXCEPTION
  625. WHEN HIVE_EXCEPTION THEN
  626. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  627. WHEN Others THEN
  628. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  629. END;
  630. CREATE OR REPLACE PROCEDURE shanglifeecif.init_individual_main() -- 初始化 数据全部插入
  631. IS
  632. DECLARE
  633. individual_count int
  634. strsql string
  635. BEGIN
  636. shanglifeecif.customertotaltemp();
  637. DELETE FROM shanglifeecif.individual;
  638. --初始化客户信息
  639. shanglifeecif.init_all_individual();
  640. --更新用户等级信息
  641. shanglifeecif.up_t_customers_class_1();
  642. --更新其它信息
  643. shanglifeecif.up_other_customerinfo();
  644. --更新被保人信息
  645. shanglifeecif.update_insuredinfo();
  646. -- 初始化用户渠道关系表
  647. shanglifeecif.init_customerno_salecom_relation();
  648. --客户信息添加渠道
  649. shanglifeecif.init_Individual_salecom();
  650. END;
  651. CREATE OR REPLACE PROCEDURE shanglifeecif.init_Individual_salecom() IS
  652. DECLARE
  653. BEGIN
  654. -- 客户信息添加渠道
  655. --
  656. UPDATE shanglifeecif.Individual si1 SET si1.SALECOM = (
  657. SELECT t.salecoms FROM (
  658. SELECT customerno , concat_ws(',',collect_set(salecom)) AS salecoms FROM (
  659. SELECT b.customerno AS customerno ,b.salecom AS salecom FROM
  660. shanglifeecif.individual a , shanglifeecif.customerno_salecom_relation b
  661. WHERE a.scustid = b.customerno
  662. ) GROUP BY customerno
  663. ) t
  664. WHERE t.customerno = si1.scustid);
  665. dbms_output.put_line('init_Individual_salecom 函数跑批完成!');
  666. EXCEPTION
  667. WHEN HIVE_EXCEPTION THEN
  668. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  669. WHEN Others THEN
  670. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  671. END;
  672. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main()
  673. IS
  674. DECLARE
  675. s_count int
  676. BEGIN
  677. DELETE FROM shanglifeecif.IndRelationShip;
  678. --从保单信息表(POLICY_INFORMATION)获取投保人和被保人的关系并
  679. --第一步取关系父母,子女
  680. insert into shanglifeecif.IndRelationShip(
  681. irsid,
  682. RSType,
  683. IndID1,
  684. Name1,
  685. IDCard1,
  686. Role1,
  687. IndID2,
  688. Name2,
  689. IDCard2,
  690. RSSTime,
  691. Role2
  692. )SELECT
  693. reflect("java.util.UUID", "randomUUID"),
  694. '父母',
  695. p.CUSTOMERNO,
  696. max(p.NAME),
  697. max(p.IDNO),
  698. CASE max(p.sex)
  699. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  700. p.INSUREDNO,
  701. max(p.INSUREDNAME),
  702. max(p.INSUREDIDNO),
  703. min(p.polapplydate),
  704. CASE max(p.INSUREDSEX)
  705. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END
  706. FROM dsj.POLICY_INFORMATION p
  707. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  708. AND p.birthday > p.insuredbirthday
  709. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  710. insert into shanglifeecif.IndRelationShip(
  711. irsid,
  712. RSType,
  713. IndID1,
  714. Name1,
  715. IDCard1,
  716. Role1,
  717. IndID2,
  718. Name2,
  719. IDCard2,
  720. RSSTime,
  721. Role2
  722. )
  723. SELECT
  724. reflect("java.util.UUID", "randomUUID"),
  725. '子女',
  726. p.CUSTOMERNO,
  727. max(p.NAME),
  728. max(p.IDNO),
  729. CASE max(p.sex)
  730. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  731. p.INSUREDNO,
  732. max(p.INSUREDNAME),
  733. max(p.INSUREDIDNO),
  734. min(p.polapplydate),
  735. CASE max(p.INSUREDSEX)
  736. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END
  737. FROM dsj.POLICY_INFORMATION p
  738. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  739. AND p.birthday < p.insuredbirthday
  740. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  741. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  742. insert into shanglifeecif.IndRelationShip(
  743. irsid,
  744. RSType,
  745. IndID1,
  746. Name1,
  747. IDCard1,
  748. Role1,
  749. IndID2,
  750. Name2,
  751. IDCard2,
  752. RSSTime,
  753. Role2
  754. )SELECT
  755. reflect("java.util.UUID", "randomUUID"),
  756. '祖父母、外祖父母',
  757. p.CUSTOMERNO,
  758. max(p.NAME),
  759. max(p.IDNO),
  760. CASE max(p.sex)
  761. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  762. p.INSUREDNO,
  763. max(p.INSUREDNAME),
  764. max(p.INSUREDIDNO),
  765. min(p.polapplydate),
  766. CASE max(p.INSUREDSEX)
  767. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END
  768. FROM dsj.POLICY_INFORMATION p
  769. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  770. AND p.birthday > p.insuredbirthday
  771. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  772. insert into shanglifeecif.IndRelationShip(
  773. irsid,
  774. RSType,
  775. IndID1,
  776. Name1,
  777. IDCard1,
  778. Role1,
  779. IndID2,
  780. Name2,
  781. IDCard2,
  782. RSSTime,
  783. Role2
  784. )SELECT
  785. reflect("java.util.UUID", "randomUUID"),
  786. '祖孙、外祖孙',
  787. p.CUSTOMERNO,
  788. max(p.NAME),
  789. max(p.IDNO),
  790. CASE max(p.sex)
  791. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  792. p.INSUREDNO,
  793. max(p.INSUREDNAME),
  794. max(p.INSUREDIDNO),
  795. min(p.polapplydate),
  796. CASE max(p.INSUREDSEX)
  797. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END
  798. FROM dsj.POLICY_INFORMATION p
  799. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  800. AND p.birthday < p.insuredbirthday
  801. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  802. --第三步取配偶和其他
  803. insert into shanglifeecif.IndRelationShip(
  804. irsid,
  805. RSType,
  806. IndID1,
  807. Name1,
  808. IDCard1,
  809. Role1,
  810. IndID2,
  811. Name2,
  812. IDCard2,
  813. RSSTime,
  814. Role2
  815. )SELECT
  816. reflect("java.util.UUID", "randomUUID"),
  817. max(p.RELATIONTOAPPNT),
  818. p.CUSTOMERNO,
  819. max(p.NAME),
  820. max(p.IDNO),
  821. CASE max(p.RELATIONTOAPPNT)
  822. WHEN '配偶'
  823. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  824. ELSE max(p.RELATIONTOAPPNT)
  825. END,
  826. p.INSUREDNO,
  827. max(p.INSUREDNAME),
  828. max(p.INSUREDIDNO),
  829. min(p.polapplydate),
  830. CASE max(p.RELATIONTOAPPNT)
  831. WHEN '配偶'
  832. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  833. ELSE max(p.RELATIONTOAPPNT)
  834. END
  835. FROM dsj.POLICY_INFORMATION p
  836. WHERE p.RELATIONTOAPPNT = '配偶'
  837. or p.RELATIONTOAPPNT = '其他'
  838. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  839. -- 完善被保人关系
  840. -- waite up sqls running end then run this sql if time is less will be loss data
  841. dbms_lock.sleep(60);
  842. insert into shanglifeecif.IndRelationShip(
  843. irsid,
  844. RSType,
  845. IndID1,
  846. Name1,
  847. IDCard1,
  848. Role1,
  849. IndID2,
  850. Name2,
  851. IDCard2,
  852. Role2
  853. )SELECT reflect("java.util.UUID", "randomUUID"),
  854. CASE RSType
  855. WHEN '父母' THEN '子女'
  856. WHEN '子女' THEN '父母'
  857. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  858. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  859. WHEN '配偶' THEN '配偶'
  860. ELSE RSType
  861. END,
  862. IndID2,
  863. Name2,
  864. IDCard2,
  865. Role2,
  866. IndID1,
  867. Name1,
  868. IDCard1,
  869. Role1
  870. FROM shanglifeecif.IndRelationShip sis ;
  871. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  872. EXCEPTION
  873. WHEN HIVE_EXCEPTION THEN
  874. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  875. WHEN Others THEN
  876. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  877. END;
  878. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main2( )
  879. IS
  880. DECLARE
  881. s_count int
  882. BEGIN
  883. -- 完善被保人关系
  884. /** */
  885. insert into shanglifeecif.IndRelationShip(
  886. irsid,
  887. RSType,
  888. IndID1,
  889. Name1,
  890. IDCard1,
  891. Role1,
  892. IndID2,
  893. Name2,
  894. IDCard2,
  895. Role2
  896. )SELECT reflect("java.util.UUID", "randomUUID"),
  897. CASE RSType
  898. WHEN '父母' THEN '子女'
  899. WHEN '子女' THEN '父母'
  900. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  901. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  902. WHEN '配偶' THEN '配偶'
  903. ELSE RSType
  904. END,
  905. IndID2,
  906. Name2,
  907. IDCard2,
  908. Role2,
  909. IndID1,
  910. Name1,
  911. IDCard1,
  912. Role1
  913. FROM shanglifeecif.IndRelationShip sis ;
  914. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  915. EXCEPTION
  916. WHEN HIVE_EXCEPTION THEN
  917. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  918. WHEN Others THEN
  919. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  920. END;
  921. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement_main() -- 创建主存储过程
  922. IS
  923. BEGIN
  924. DELETE FROM shanglifeecif.insurancearrangement;
  925. --根据policy_information 更新保单表
  926. shanglifeecif.init_insurancearrangement_policy_information();
  927. --其他标的字段 更新
  928. shanglifeecif.update_risk_categories();
  929. END;
  930. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement_policy_information() -- 创建主存储过程
  931. IS
  932. BEGIN
  933. INSERT INTO shanglifeecif.insurancearrangement(
  934. iaid ,--'保单ID',
  935. policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  936. pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  937. pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  938. norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  939. payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  940. applicantscustid ,-- '投保人 上游客户号,再找到individualid',
  941. appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  942. appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  943. insuredscustid ,-- '主被保险人 游客户号',
  944. insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  945. inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  946. productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  947. productname,--险种名称
  948. policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  949. payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  950. policystate,--保单状态
  951. prem,--保费
  952. sumprem, --累计保费,
  953. Risk,--保额
  954. NPDate,--下次缴费日期
  955. PADate,--投保日期
  956. pisdate,--签单日期
  957. AgentOrg,--代理机构
  958. schannel,--销售渠道
  959. schannelname,--销售渠道中文
  960. salecomname,--业绩归属中文
  961. POService,--保全标志
  962. PWComp,--承保分公司
  963. security ,--保险期原始值
  964. agrmntage ,--保险期限
  965. salesperson,--业务员标识代码
  966. SPName,--业务员名称
  967. renewalDate,--续保日期
  968. created_by ,-- '创建人',
  969. created_time -- '创建时间',
  970. )
  971. SELECT
  972. row_number()over(),
  973. trim(CONTNO) as CONTNO,--policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  974. trim(CVALIDATE) as CVALIDATE,--pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  975. trim(ENDDATE) as ENDDATE,--pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  976. PAYCOUNT,--norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  977. trim(PAYINTV) as PAYINTV,--payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  978. trim(CUSTOMERNO) as CUSTOMERNO,--applicantid ,-- '投保人 根据POLICY_INFORMATION.CUSTOMERNO关联individual上游客户号,再找到individualid',
  979. trim(NAME) as NAME,--appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  980. trim(IDNO) as IDNO,--appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  981. trim(insuredno) as insuredno,--insuredid ,-- '主被保险人 insuredno',
  982. trim(INSUREDNAME) as INSUREDNAME,--insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  983. trim(INSUREDIDNO) as INSUREDIDNO,--inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  984. trim(RISKCODE) as RISKCODE,--productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  985. trim(RISKNAME) as RISKNAME, --productname 险种名称
  986. trim(SALECOM) as SALECOM,--policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  987. PAYENDYEAR,--payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  988. trim(APPFLAG) as APPFLAG, --保单状态
  989. prem,--保费
  990. sumprem,--累计保费
  991. AMNT,--保额
  992. trim(PAYTODATE) as PAYTODATE,--下次缴费日期
  993. trim(polapplydate) as polapplydate,--投保日期
  994. trim(SIGNDATE) as SIGNDATE,--签单日期
  995. trim(AGENTCOM) as AGENTCOM,--代理机构
  996. trim(SALECHNL) as SALECHNL,--销售渠道
  997. trim(SALECHNLNAME) as SALECHNLNAME,--销售渠道中文
  998. trim(salecomname) as salecomname,--业绩归属中文
  999. trim(PRESERVATIONFLAG) as PRESERVATIONFLAG,--保全标志
  1000. "上海人寿上海分公司",
  1001. trim(security) as security, --保险期原始值
  1002. case
  1003. when security ='终身' then 42720
  1004. WHEN security LIKE '%天' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT)
  1005. WHEN security LIKE '%月' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT) * 30
  1006. WHEN security LIKE '%年' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT) * 365
  1007. WHEN security LIKE '%周岁' THEN CAST(SUBSTR(security, 2, LENGTH(security) - 3) AS INT) * 365
  1008. ELSE 0
  1009. end,
  1010. trim(AGENTCODE) as AGENTCODE,--代理人代码
  1011. trim(AGENTNAME) as AGENTNAME,--代理人名称
  1012. trim(paytodate) as paytodate,--续保日期
  1013. 'admin',
  1014. sysdate()
  1015. FROM dsj.policy_information;
  1016. --更新INSURANCEINFO 表中的信息
  1017. UPDATE shanglifeecif.insurancearrangement a SET (
  1018. pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1019. --pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1020. --padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1021. --policystate ,--INSURANCEINFO,appflag
  1022. --prem ,-- '总保费 INSURANCEINFO.PREM',
  1023. --productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1024. agentchannel -- '代理渠道 INSURANCEINFO.SELLTYPE',
  1025. ) = (
  1026. select
  1027. trim(b.PRTNO) as PRTNO,--pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1028. --SIGNDATE,--pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1029. --POLAPPLYDATE,--padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1030. --appflag,--policystate ,--INSURANCEINFO,appflag
  1031. --PREM,--prem ,-- '总保费 INSURANCEINFO.PREM',
  1032. --RISKNAME,--productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1033. trim(b.SELLTYPE) as SELLTYPE--agentchannel ,-- '代理渠道 INSURANCEINFO.SELLTYPE',
  1034. from dsj.INSURANCEINFO b
  1035. where b.contno = a.policyno
  1036. ) WHERE 1=1 ;
  1037. dbms_output.put_line('init_insurancearrangement_policy_information函数跑批完成!');
  1038. EXCEPTION
  1039. WHEN HIVE_EXCEPTION THEN
  1040. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1041. WHEN Others THEN
  1042. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1043. END;
  1044. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insuredno_salecom_relation() IS
  1045. DECLARE
  1046. BEGIN
  1047. -- 用户 渠道关系表
  1048. insert into shanglifeecif.insuredno_salecom_relation (
  1049. insuredno,
  1050. salecomname,
  1051. salecom
  1052. )
  1053. SELECT insuredno , salecomname ,salecom FROM (
  1054. SELECT insuredno , salecomname ,salecom FROM dsj.POLICY_INFORMATION GROUP BY insuredno , salecomname,salecom
  1055. ) t ;
  1056. dbms_output.put_line('insuredno_salecom_relation 函数跑批完成!');
  1057. EXCEPTION
  1058. WHEN HIVE_EXCEPTION THEN
  1059. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1060. WHEN Others THEN
  1061. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1062. END;
  1063. CREATE OR REPLACE PROCEDURE shanglifeecif.insuranceclaimthread_main() -- 创建主存储过程
  1064. IS
  1065. BEGIN
  1066. insert into shanglifeecif.insuranceclaimthread (
  1067. icthreadid ,--'保险理赔Id',1
  1068. crno ,--'立案号',2
  1069. --companyno ,-- '公司代码',
  1070. policyno ,--'保险单号 INSURANCE_CLAIM.CONTNO',3
  1071. --applicantid ,--'投保人ID',
  1072. --appname ,--'投保人名称',
  1073. --appphone ,--'投保人手机',
  1074. --appcertid ,--'投保人证件号码 INSURANCE_CLAIM.RISKDATE',
  1075. cnno ,--'报案号',4
  1076. losstime ,-- '损失发生时间',5
  1077. --rpid ,-- '报案人',
  1078. rpname ,--'报案人名称',6
  1079. --rpphone ,-- '报案人电话',
  1080. --lpid ,--'出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  1081. lpscutid,--'出险人上游客户号7
  1082. lpname ,-- '出险人名称',
  1083. cndate ,--'报案日期 INSURANCE_CLAIM.RPTDATE',
  1084. lossdescribe ,-- '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  1085. crdate ,-- '立案日期 INSURANCE_CLAIM.RGTDATE',
  1086. cndescribe ,--'报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  1087. claimstatus ,--'理赔状态 案件的状态,例如:录入、已立案等',
  1088. csdate ,--'理赔状态日期',
  1089. relationship ,-- '报案人与出险人关系',
  1090. ccno ,-- '赔案号 AUDIT_CLAIM_INSURANCE.CLMNO',
  1091. ccstatus ,--'赔案状态',
  1092. --ccsdate ,-- '赔案状态日期',
  1093. productid ,--'险种代码 INSURANCE_CLAIM_HEALTH.RISKCODE',
  1094. productname, --'险种名称 INSURANCE_CLAIM_HEALTH.RISKNAME',
  1095. ccamt ,--'赔付金额 INSURANCE_CLAIM_HEALTH.realpay',
  1096. --branchcode,-- '机构代码',
  1097. claimcasestatus ,--'案件状态INSURANCE_CLAIM_HEALTH.LLCLAIMSTATE',
  1098. accidenttype,
  1099. created_by ,
  1100. created_time
  1101. -- updated_time,
  1102. -- updated_by
  1103. ) select
  1104. row_number()over(),--1
  1105. trim(rgtno) as rgtno,--2
  1106. trim(contno) as contno,--3
  1107. trim(rptno) as rptno,--报案号4
  1108. trim(riskdate) as riskdate,--损失发生的时间5
  1109. trim(rptorname) as rptorname,--报案人名称6
  1110. trim(INSUREDNO) as INSUREDNO,--出险人 上游客户号
  1111. trim(INSUREDNAME) as INSUREDNAME,
  1112. trim(rptdate) as rptdate,
  1113. trim(lloccurreason) as lloccurreason,
  1114. trim(rgtdate) as rgtdate,
  1115. trim(ACCDESC) as ACCDESC,--报案描述
  1116. trim(llclaimstate) as llclaimstate,
  1117. trim(auditdate) as auditdate,--审批日期
  1118. trim(relationname) as relationname,
  1119. trim(clmno) as clmno,--赔案号
  1120. trim(llgettype) as llgettype,--赔案状态
  1121. trim(riskcode) as riskcode,
  1122. trim(riskname) as riskname,
  1123. realpay,
  1124. trim(llclaimstate) as llclaimstate,--案件状态
  1125. trim(accidenttype) as accidenttype,
  1126. 'admin',
  1127. sysdate()
  1128. from dsj.INSURANCE_CLAIM where contno is not null;
  1129. -- 更新渠道字段
  1130. shanglifeecif.update_insuranceclaimthread_add_salecom();
  1131. dbms_output.put_line('insuranceclaimthread_main函数跑批完成!');
  1132. EXCEPTION
  1133. WHEN HIVE_EXCEPTION THEN
  1134. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1135. WHEN Others THEN
  1136. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1137. END;
  1138. CREATE PROCEDURE shanglifeecif.222NewProcedure( )
  1139. IS
  1140. DECLARE
  1141. s_count int
  1142. BEGIN
  1143. DELETE FROM shanglifeecif.IndRelationShip;
  1144. --从保单信息表(dsj.POLICY_INFORMATION)获取投保人和被保人的关系并
  1145. --第一步取关系父母,子女
  1146. insert into shanglifeecif.IndRelationShip(
  1147. irsid,
  1148. RSType,
  1149. IndID1,
  1150. Name1,
  1151. IDCard1,
  1152. Role1,
  1153. IndID2,
  1154. Name2,
  1155. IDCard2,
  1156. RSSTime,
  1157. Role2
  1158. )SELECT
  1159. reflect("java.util.UUID", "randomUUID"),
  1160. '父母',
  1161. p.CUSTOMERNO,
  1162. max(p.NAME),
  1163. max(p.IDNO),
  1164. CASE max(p.sex)
  1165. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1166. p.INSUREDNO,
  1167. max(p.INSUREDNAME),
  1168. max(p.INSUREDIDNO),
  1169. min(p.polapplydate),
  1170. CASE max(p.INSUREDSEX)
  1171. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END
  1172. FROM dsj.POLICY_INFORMATION p
  1173. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1174. AND p.birthday > p.insuredbirthday
  1175. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1176. insert into shanglifeecif.IndRelationShip(
  1177. irsid,
  1178. RSType,
  1179. IndID1,
  1180. Name1,
  1181. IDCard1,
  1182. Role1,
  1183. IndID2,
  1184. Name2,
  1185. IDCard2,
  1186. RSSTime,
  1187. Role2
  1188. )
  1189. SELECT
  1190. reflect("java.util.UUID", "randomUUID"),
  1191. '子女',
  1192. p.CUSTOMERNO,
  1193. max(p.NAME),
  1194. max(p.IDNO),
  1195. CASE max(p.sex)
  1196. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1197. p.INSUREDNO,
  1198. max(p.INSUREDNAME),
  1199. max(p.INSUREDIDNO),
  1200. min(p.polapplydate),
  1201. CASE max(p.INSUREDSEX)
  1202. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END
  1203. FROM dsj.POLICY_INFORMATION p
  1204. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1205. AND p.birthday < p.insuredbirthday
  1206. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1207. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  1208. insert into shanglifeecif.IndRelationShip(
  1209. irsid,
  1210. RSType,
  1211. IndID1,
  1212. Name1,
  1213. IDCard1,
  1214. Role1,
  1215. IndID2,
  1216. Name2,
  1217. IDCard2,
  1218. RSSTime,
  1219. Role2
  1220. )SELECT
  1221. reflect("java.util.UUID", "randomUUID"),
  1222. '祖父母、外祖父母',
  1223. p.CUSTOMERNO,
  1224. max(p.NAME),
  1225. max(p.IDNO),
  1226. CASE max(p.sex)
  1227. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1228. p.INSUREDNO,
  1229. max(p.INSUREDNAME),
  1230. max(p.INSUREDIDNO),
  1231. min(p.polapplydate),
  1232. CASE max(p.INSUREDSEX)
  1233. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END
  1234. FROM dsj.POLICY_INFORMATION p
  1235. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1236. AND p.birthday > p.insuredbirthday
  1237. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1238. insert into shanglifeecif.IndRelationShip(
  1239. irsid,
  1240. RSType,
  1241. IndID1,
  1242. Name1,
  1243. IDCard1,
  1244. Role1,
  1245. IndID2,
  1246. Name2,
  1247. IDCard2,
  1248. RSSTime,
  1249. Role2
  1250. )SELECT
  1251. reflect("java.util.UUID", "randomUUID"),
  1252. '祖孙、外祖孙',
  1253. p.CUSTOMERNO,
  1254. max(p.NAME),
  1255. max(p.IDNO),
  1256. CASE max(p.sex)
  1257. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1258. p.INSUREDNO,
  1259. max(p.INSUREDNAME),
  1260. max(p.INSUREDIDNO),
  1261. min(p.polapplydate),
  1262. CASE max(p.INSUREDSEX)
  1263. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END
  1264. FROM dsj.POLICY_INFORMATION p
  1265. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1266. AND p.birthday < p.insuredbirthday
  1267. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1268. --第三步取配偶和其他
  1269. insert into shanglifeecif.IndRelationShip(
  1270. irsid,
  1271. RSType,
  1272. IndID1,
  1273. Name1,
  1274. IDCard1,
  1275. Role1,
  1276. IndID2,
  1277. Name2,
  1278. IDCard2,
  1279. RSSTime,
  1280. Role2
  1281. )SELECT
  1282. reflect("java.util.UUID", "randomUUID"),
  1283. max(p.RELATIONTOAPPNT),
  1284. p.CUSTOMERNO,
  1285. max(p.NAME),
  1286. max(p.IDNO),
  1287. CASE max(p.RELATIONTOAPPNT)
  1288. WHEN '配偶'
  1289. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1290. ELSE max(p.RELATIONTOAPPNT)
  1291. END,
  1292. p.INSUREDNO,
  1293. max(p.INSUREDNAME),
  1294. max(p.INSUREDIDNO),
  1295. min(p.polapplydate),
  1296. CASE max(p.RELATIONTOAPPNT)
  1297. WHEN '配偶'
  1298. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1299. ELSE max(p.RELATIONTOAPPNT)
  1300. END
  1301. FROM dsj.POLICY_INFORMATION p
  1302. WHERE p.RELATIONTOAPPNT = '配偶'
  1303. -- or p.RELATIONTOAPPNT = '其他'
  1304. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1305. -- 完善被保人关系
  1306. /** */
  1307. insert into shanglifeecif.IndRelationShip(
  1308. irsid,
  1309. RSType,
  1310. IndID1,
  1311. Name1,
  1312. IDCard1,
  1313. Role1,
  1314. IndID2,
  1315. Name2,
  1316. IDCard2,
  1317. Role2
  1318. )SELECT reflect("java.util.UUID", "randomUUID"),
  1319. CASE RSType
  1320. WHEN '父母' THEN '子女'
  1321. WHEN '子女' THEN '父母'
  1322. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1323. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1324. WHEN '配偶' THEN '配偶'
  1325. ELSE RSType
  1326. END,
  1327. IndID2,
  1328. Name2,
  1329. IDCard2,
  1330. Role2,
  1331. IndID1,
  1332. Name1,
  1333. IDCard1,
  1334. Role1
  1335. FROM shanglifeecif.IndRelationShip sis ;
  1336. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1337. EXCEPTION
  1338. WHEN HIVE_EXCEPTION THEN
  1339. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1340. WHEN Others THEN
  1341. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1342. END;
  1343. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_bq()
  1344. IS
  1345. DECLARE
  1346. p_count int
  1347. BEGIN
  1348. insert into shanglifeecif.partytimeline (
  1349. TripID,
  1350. PolicyNo,
  1351. PartyID,
  1352. name,
  1353. PRole,
  1354. Scenario,
  1355. SDate,
  1356. DESCRIBE,
  1357. created_by ,
  1358. created_time
  1359. )select
  1360. reflect("java.util.UUID", "randomUUID"),
  1361. i.contno,
  1362. i.customerno,
  1363. max(i.name),
  1364. '投保人' AS tbr,
  1365. '保全' AS bq,
  1366. l.edorappdate,
  1367. max(lm.edorname),
  1368. 'admin',
  1369. sysdate()
  1370. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information i
  1371. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND i.contno = l.contno
  1372. GROUP BY i.customerno,i.contno,l.edorappdate,l.edortype;
  1373. dbms_output.put_line('partytimeline_bq函数跑批完成!');
  1374. EXCEPTION
  1375. WHEN HIVE_EXCEPTION THEN
  1376. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1377. WHEN Others THEN
  1378. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1379. END
  1380. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_hf()
  1381. IS
  1382. DECLARE
  1383. p_count int
  1384. BEGIN
  1385. insert into shanglifeecif.partytimeline (
  1386. TripID,
  1387. PolicyNo,
  1388. PartyID,
  1389. name,
  1390. PRole,
  1391. Scenario,
  1392. SDate,
  1393. DESCRIBE,
  1394. created_by ,
  1395. created_time
  1396. ) SELECT
  1397. reflect("java.util.UUID", "randomUUID"),
  1398. cad.productno,
  1399. cac.customerno,
  1400. max(cac.customername),
  1401. '投保人',
  1402. '回访',
  1403. cad.lastdealtime,
  1404. CASE max(cad.actiondefguid)
  1405. when '402837815c1a4fc6015c1a735351122d' then '特殊回访'
  1406. when '402837815c1a4fc6015c1a735350012a' then '其他回访'
  1407. when '402837815c2ff6b5015c3005e7fb0004' then '失效回访'
  1408. when '402837815c2ff6b5015c3005e7fb2222' then '回执超期回访'
  1409. when '402837815c2ff6b5015c3005e7fb0003' then '宽限期50天'
  1410. when '402837815c2ff6b5015c3005e7fb0002' then '宽限期30天'
  1411. when '402837815c1a4fc6015c1a735350012f' then '新契约回访'
  1412. when '402837815c2ff6b5015c3005e7fb0001' then '续期回访'
  1413. end ,
  1414. 'admin',
  1415. sysdate()
  1416. FROM dsj.CC_ACTION_DATA cad,dsj.cc_action_customerinfo cac
  1417. WHERE cac.unioncustomerid = cad.unioncustomerid AND cad.lastdealtime IS NOT null GROUP BY cad.productno,cac.customerno,cad.lastdealtime;
  1418. dbms_output.put_line('partytimeline_hf函数跑批完成!');
  1419. EXCEPTION
  1420. WHEN HIVE_EXCEPTION THEN
  1421. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1422. WHEN Others THEN
  1423. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1424. END;
  1425. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_lp()
  1426. IS
  1427. DECLARE
  1428. p_count int
  1429. BEGIN
  1430. insert into shanglifeecif.partytimeline (
  1431. TripID,
  1432. PolicyNo,
  1433. PartyID,
  1434. name,
  1435. PCertID,
  1436. PRole,
  1437. Scenario,
  1438. SDate,
  1439. describe,
  1440. created_by ,
  1441. created_time
  1442. ) select
  1443. reflect("java.util.UUID", "randomUUID"),
  1444. trim(contno) as contno,
  1445. trim(INSUREDNO) as INSUREDNO,
  1446. trim(INSUREDNAME) as INSUREDNAME,
  1447. trim(idno) as idno,
  1448. '投保人',
  1449. '理赔',
  1450. CASE
  1451. WHEN APPLYDATE IS NOT NULL THEN APPLYDATE
  1452. WHEN APPLYDATE IS NULL THEN RPTDATE
  1453. END AS SDate,
  1454. trim(ACCIDENTTYPE) as ACCIDENTTYPE,
  1455. 'admin',
  1456. sysdate()
  1457. from dsj.insurance_claim WHERE contno IS NOT NULL;
  1458. dbms_output.put_line('partytimeline_lp函数跑批完成!');
  1459. EXCEPTION
  1460. WHEN HIVE_EXCEPTION THEN
  1461. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1462. WHEN Others THEN
  1463. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1464. END;
  1465. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_main()
  1466. IS
  1467. BEGIN
  1468. DELETE FROM shanglifeecif.partytimeline;
  1469. shanglifeecif.partytimeline_tb();
  1470. shanglifeecif.partytimeline_lp();
  1471. shanglifeecif.partytimeline_zx();
  1472. shanglifeecif.partytimeline_bq();
  1473. --shanglifeecif.partytimeline_tuibao();
  1474. shanglifeecif.partytimeline_ts();
  1475. shanglifeecif.partytimeline_hf();
  1476. shanglifeecif.partytimeline_xq();
  1477. -- 更新渠道字段
  1478. shanglifeecif.update_partytimeline_add_salecom();
  1479. END;
  1480. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tb() -- 创建主存储过程
  1481. IS
  1482. BEGIN
  1483. insert into shanglifeecif.partytimeline (
  1484. TripID,
  1485. PolicyNo,
  1486. PartyID,
  1487. name,
  1488. PCertID,
  1489. PRole,
  1490. Scenario,
  1491. SDate,
  1492. enddate,
  1493. created_by ,
  1494. created_time
  1495. ) select
  1496. reflect("java.util.UUID", "randomUUID"),
  1497. trim(contno) as contno,
  1498. trim(max(customerno)) as customerno,
  1499. trim(max(name)) as name,
  1500. trim(max(idno)) as idno,
  1501. '投保人',
  1502. '投保',
  1503. trim(max(polapplydate)) as polapplydate,
  1504. trim(max(enddate)) as enddate,
  1505. 'admin',
  1506. sysdate()
  1507. from dsj.policy_information WHERE contno IS NOT NULL GROUP BY contno;
  1508. dbms_output.put_line('partytimeline_tb函数跑批完成!');
  1509. EXCEPTION
  1510. WHEN HIVE_EXCEPTION THEN
  1511. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1512. WHEN Others THEN
  1513. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1514. END;
  1515. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_ts()
  1516. IS
  1517. DECLARE
  1518. p_count int
  1519. BEGIN
  1520. insert into shanglifeecif.partytimeline (
  1521. TripID,
  1522. PolicyNo,
  1523. PartyID,
  1524. name,
  1525. PRole,
  1526. Scenario,
  1527. SDate,
  1528. DESCRIBE,
  1529. created_by ,
  1530. created_time
  1531. ) SELECT
  1532. reflect("java.util.UUID", "randomUUID"),
  1533. max(ac.productnos),
  1534. max(i.customerno),
  1535. max(ac.complaintsname),
  1536. '投保人'||CASE max(ac.complaintsrelation)
  1537. WHEN '201' THEN ''
  1538. WHEN '202' THEN '子女'
  1539. WHEN '203' THEN '配偶'
  1540. WHEN '204' THEN '父母'
  1541. WHEN '205' THEN '其他关系'
  1542. END AS complaintsrelation,
  1543. '投诉',
  1544. ac.inserttime ,
  1545. CASE max(ac.resultclassification)
  1546. WHEN '101' THEN '销售纠纷'
  1547. WHEN '102' THEN '理赔纠纷'
  1548. WHEN '103' THEN '退保纠纷'
  1549. WHEN '104' THEN '承保纠纷'
  1550. WHEN '105' THEN '续收续保纠纷'
  1551. WHEN '106' THEN '保全纠纷'
  1552. WHEN '107' THEN '其他'
  1553. END as resultclassification,
  1554. 'admin',
  1555. sysdate
  1556. FROM dsj.cc_action_complaints ac
  1557. LEFT JOIN dsj.policy_information i ON ac.productnos = i.contno
  1558. WHERE ac.productnos IS NOT NULL AND i.customerno IS NOT NULL
  1559. GROUP BY ac.inserttime ;
  1560. dbms_output.put_line('partytimeline_ts函数跑批完成!');
  1561. EXCEPTION
  1562. WHEN HIVE_EXCEPTION THEN
  1563. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1564. WHEN Others THEN
  1565. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1566. END;
  1567. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tuibao()
  1568. IS
  1569. DECLARE
  1570. p_count int
  1571. BEGIN
  1572. insert into shanglifeecif.partytimeline (
  1573. TripID,
  1574. PolicyNo,
  1575. PartyID,
  1576. name,
  1577. PRole,
  1578. Scenario,
  1579. SDate,
  1580. DESCRIBE,
  1581. created_by ,
  1582. created_time
  1583. ) SELECT
  1584. reflect("java.util.UUID", "randomUUID"),
  1585. trim(t.contno) as contno,
  1586. trim(t.customerno) as customerno,
  1587. trim(t.name) as name,
  1588. trim(t.tbr) as tbr,
  1589. trim(t.tb) as tb,
  1590. trim(t.edorappdate) as edorappdate,
  1591. t.edorreason,
  1592. 'admin',
  1593. sysdate()
  1594. FROM (
  1595. SELECT
  1596. row_number() over(partition by i.contno) rn,
  1597. lm.contno,
  1598. i.customerno,
  1599. i.name,
  1600. '投保人' AS tbr,
  1601. '退保' AS tb,
  1602. to_char(lm.edorappdate,"yyyy-MM-dd") edorappdate,
  1603. CASE lm.edorreasoncode
  1604. WHEN '01' THEN '死亡'
  1605. WHEN '02' THEN '失踪'
  1606. WHEN '03' THEN '离异'
  1607. WHEN '04' THEN '债权转移'
  1608. WHEN '05' THEN '被保险人成年'
  1609. WHEN '06' THEN '其它'
  1610. ELSE '其它'
  1611. END AS edorreason
  1612. FROM dsj.lpedoritem lm,dsj.policy_information i
  1613. where lm.contno = i.contno AND lm.edortype='CT' AND lm.edorstate = 0
  1614. ) t WHERE t.rn = 1;
  1615. dbms_output.put_line('partytimeline_tuibao函数跑批完成!');
  1616. EXCEPTION
  1617. WHEN HIVE_EXCEPTION THEN
  1618. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1619. WHEN Others THEN
  1620. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1621. END;
  1622. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_xq() -- 创建主存储过程
  1623. IS
  1624. BEGIN
  1625. insert into shanglifeecif.partytimeline (
  1626. TripID,
  1627. PolicyNo,
  1628. PartyID,
  1629. name,
  1630. PRole,
  1631. Scenario,
  1632. SDate,
  1633. created_by ,
  1634. created_time
  1635. ) select
  1636. reflect("java.util.UUID", "randomUUID"),
  1637. lp.contno,
  1638. lp.appntno,
  1639. '',
  1640. '投保人',
  1641. '续期',
  1642. to_char(lp.confdate,'yyyy-MM-dd'),
  1643. 'admin',
  1644. sysdate
  1645. FROM dsj.ljapayperson lp WHERE lp.paycount > 1;
  1646. dbms_output.put_line('partytimeline_xq函数跑批完成!');
  1647. EXCEPTION
  1648. WHEN HIVE_EXCEPTION THEN
  1649. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1650. WHEN Others THEN
  1651. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1652. END;
  1653. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_zx()
  1654. IS
  1655. DECLARE
  1656. p_count int
  1657. BEGIN
  1658. insert into shanglifeecif.partytimeline (
  1659. TripID,
  1660. PolicyNo,
  1661. PartyID,
  1662. name,
  1663. PRole,
  1664. Scenario,
  1665. SDate,
  1666. DESCRIBE,
  1667. created_by ,
  1668. created_time
  1669. ) SELECT
  1670. reflect("java.util.UUID", "randomUUID"),
  1671. m.contnos,
  1672. max(i.customerno) customerno,
  1673. max(m.econtactsName) econtactsName,
  1674. '投保人' AS tbr,
  1675. '咨询' AS zx,
  1676. m.starttime,
  1677. max(m.reasonsecondname) reasonsecondname,
  1678. 'admin',
  1679. sysdate()
  1680. from dsj.cc_record_main m
  1681. LEFT JOIN dsj.policy_information i ON m.contnos = i.contno
  1682. WHERE m.contnos IS NOT NULL GROUP BY m.contnos,m.starttime;
  1683. dbms_output.put_line('partytimeline_zx函数跑批完成!');
  1684. EXCEPTION
  1685. WHEN HIVE_EXCEPTION THEN
  1686. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1687. WHEN Others THEN
  1688. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1689. END;
  1690. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics() IS
  1691. DECLARE
  1692. BEGIN
  1693. DELETE FROM shanglifeecif.riskcode_statistics;
  1694. insert into shanglifeecif.riskcode_statistics (
  1695. id,
  1696. kindName,
  1697. khnum,
  1698. tatolprem
  1699. ) --险种大类统计
  1700. SELECT
  1701. row_number()over(),
  1702. temp.kindName,
  1703. temp.khnum,
  1704. temp.tatolprem
  1705. FROM (
  1706. SELECT
  1707. crt.riskcategoriesname AS kindName,
  1708. count(DISTINCT scustid) AS khnum,
  1709. sum(risk) AS tatolprem
  1710. FROM shanglifeecif.customer_risk_temp crt
  1711. WHERE crt.riskcategoriesname IS NOT null
  1712. GROUP BY crt.riskcategoriesname
  1713. ) temp;
  1714. dbms_output.put_line('riskcode_statistics函数跑批完成!');
  1715. EXCEPTION
  1716. WHEN HIVE_EXCEPTION THEN
  1717. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1718. WHEN Others THEN
  1719. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1720. END ;
  1721. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics_channel() IS
  1722. DECLARE
  1723. BEGIN
  1724. DELETE FROM shanglifeecif.riskcode_statistics_channel;
  1725. insert into shanglifeecif.riskcode_statistics_channel (
  1726. id,
  1727. kindName,
  1728. khnum,
  1729. tatolprem,
  1730. salecom,
  1731. salecomname
  1732. ) --险种大类统计
  1733. SELECT
  1734. row_number()over(),
  1735. temp.kindName,
  1736. temp.khnum,
  1737. temp.tatolprem,
  1738. temp.salecom,
  1739. temp.salecomname
  1740. FROM (
  1741. SELECT
  1742. crt.riskcategoriesname AS kindName,
  1743. count(DISTINCT scustid) AS khnum,
  1744. sum(risk) AS tatolprem,
  1745. crt.salecom AS salecom,
  1746. crt.salecomname AS salecomname
  1747. FROM shanglifeecif.customer_risk_temp crt
  1748. WHERE crt.riskcategoriesname IS NOT null
  1749. and crt.salecom is not null
  1750. GROUP BY crt.riskcategoriesname,crt.salecom,crt.salecomname
  1751. ) temp;
  1752. dbms_output.put_line('riskcode_statistics_channel函数跑批完成!');
  1753. EXCEPTION
  1754. WHEN HIVE_EXCEPTION THEN
  1755. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1756. WHEN Others THEN
  1757. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1758. END ;
  1759. CREATE OR REPLACE PROCEDURE shanglifeecif.same_customer() -- 创建主存储过程
  1760. IS
  1761. DECLARE
  1762. scount int
  1763. BEGIN
  1764. DELETE FROM shanglifeecif.samecustomer;
  1765. INSERT INTO shanglifeecif.samecustomer(
  1766. sid,
  1767. scustid,
  1768. name,
  1769. gender,
  1770. birthday,
  1771. idcard,
  1772. Passport,
  1773. Dlicense,
  1774. OtherIdNumber,
  1775. sameType
  1776. )
  1777. SELECT
  1778. reflect("java.util.UUID", "randomUUID"),
  1779. sc1.scustid,
  1780. sc1.name,
  1781. sc1.gender,
  1782. sc1.birthday,
  1783. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1784. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1785. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1786. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1787. 0
  1788. FROM shanglifeecif.customertotaltemp sc1
  1789. WHERE sc1.mobile IS NOT NULL AND EXISTS (SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc1.scustid != sc2.scustid
  1790. AND sc1.name = sc2.name AND sc1.gender = sc2.gender AND sc1.idtype = sc2.idtype AND sc1.mobile = sc2.mobile);
  1791. --三要素疑似相同指姓名、性别、出生日期一致 1
  1792. INSERT INTO shanglifeecif.samecustomer(
  1793. sid,
  1794. scustid,
  1795. name,
  1796. gender,
  1797. birthday,
  1798. idcard,
  1799. Passport,
  1800. Dlicense,
  1801. OtherIdNumber,
  1802. sameType
  1803. )
  1804. SELECT
  1805. reflect("java.util.UUID", "randomUUID"),
  1806. sc1.scustid,
  1807. sc1.name,
  1808. sc1.gender,
  1809. sc1.birthday,
  1810. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1811. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1812. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1813. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1814. 1
  1815. FROM shanglifeecif.customertotaltemp sc1
  1816. WHERE EXISTS(SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc2.scustid!=sc1.scustid AND sc1.name = sc2.name AND sc1.gender = sc2.gender AND sc1.birthday = sc2.birthday )
  1817. ORDER BY sc1.name,sc1.gender,sc1.birthday
  1818. --两要素疑似相同指姓名、证件号码一致 2
  1819. INSERT INTO shanglifeecif.samecustomer(
  1820. sid,
  1821. scustid,
  1822. name,
  1823. gender,
  1824. birthday,
  1825. idcard,
  1826. Passport,
  1827. Dlicense,
  1828. OtherIdNumber,
  1829. sameType
  1830. )
  1831. SELECT
  1832. reflect("java.util.UUID", "randomUUID"),
  1833. sc1.scustid,
  1834. sc1.name,
  1835. sc1.gender,
  1836. sc1.birthday,
  1837. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1838. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1839. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1840. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1841. 2
  1842. FROM shanglifeecif.customertotaltemp sc1
  1843. WHERE sc1.idcard is not null and EXISTS (SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc2.scustid!=sc1.scustid AND sc1.name = sc2.name AND sc1.idcard = sc2.idcard);
  1844. dbms_output.put_line('same_customer函数跑批完成!');
  1845. END;
  1846. CREATE OR REPLACE PROCEDURE shanglifeecif.surrender_protection_temp() IS
  1847. DECLARE
  1848. BEGIN
  1849. DELETE FROM shanglifeecif.surrenderprotectiontemp;
  1850. insert into shanglifeecif.surrenderprotectiontemp(
  1851. tbid,
  1852. scustid,
  1853. tbday
  1854. )SELECT row_number()over(),p.customerno,max(DATEDIFF(t.edorappdate,p.cvalidate)) AS tbday FROM dsj.lpedoritem t,dsj.policy_information p
  1855. WHERE t.contno = p.contno and t.edortype='CT' AND edorstate = 0 GROUP BY p.customerno;
  1856. dbms_output.put_line('surrender_protection_temp函数跑批完成!');
  1857. EXCEPTION
  1858. WHEN HIVE_EXCEPTION THEN
  1859. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1860. WHEN Others THEN
  1861. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1862. END ;
  1863. CREATE OR REPLACE PROCEDURE shanglifeecif.tb_customerinfo() IS
  1864. DECLARE
  1865. BEGIN
  1866. DELETE FROM shanglifeecif.tbcustomerinfo;
  1867. insert into shanglifeecif.tbcustomerinfo(
  1868. tbid,
  1869. scustid,
  1870. contno,
  1871. sdate,
  1872. edate,
  1873. salecom,
  1874. salecomname
  1875. )SELECT row_number()over(),p.customerno,p.contno,p.cvalidate,t.edorappdate ,p.salecom,p.salecomname FROM dsj.lpedoritem t,dsj.policy_information p
  1876. WHERE t.contno = p.contno and t.edortype='CT' AND t.edorstate = 0 ;
  1877. dbms_output.put_line('tb_customerinfo函数跑批完成!');
  1878. EXCEPTION
  1879. WHEN HIVE_EXCEPTION THEN
  1880. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1881. WHEN Others THEN
  1882. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1883. END ;
  1884. CREATE OR REPLACE PROCEDURE shanglifeecif.up_other_customerinfo() -- 创建存储过程
  1885. IS
  1886. BEGIN
  1887. --更新客户类型投保人
  1888. UPDATE shanglifeecif.individual i SET i.custtype = '投保人' WHERE
  1889. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p);
  1890. --更新客户类型投保人、被保人
  1891. UPDATE shanglifeecif.individual i SET i.custtype = '被保人' WHERE
  1892. i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  1893. --更新客户类型投保人、被保人
  1894. UPDATE shanglifeecif.individual i SET i.custtype = '投保人、被保人' WHERE
  1895. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p)
  1896. AND i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  1897. --更新业绩归属
  1898. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  1899. SELECT trim(t.SALECOM) FROM (
  1900. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.customerno,p.SALECOM FROM dsj.policy_information p
  1901. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1902. );
  1903. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  1904. SELECT trim(t.SALECOM) FROM (
  1905. SELECT row_number()OVER(PARTITION BY p.insuredno ORDER BY p.polapplydate asc) rd,p.insuredno,p.SALECOM FROM dsj.policy_information p
  1906. ) t WHERE t.rd = 1 AND si1.scustid = t.insuredno
  1907. );
  1908. --更新职业,民族等信息
  1909. UPDATE shanglifeecif.Individual si1 SET (si1.Occupation,si1.Ethnic,si1.education) = (
  1910. SELECT trim(t.occupationname),trim(t.NATIONALITYNAME),trim(t.degree) FROM (
  1911. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate desc) rd,p.customerno,p.occupationname,p.NATIONALITYNAME,p.degree FROM dsj.policy_information p
  1912. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1913. );
  1914. --更新官微积分
  1915. UPDATE shanglifeecif.individual si SET si.officialCalculus = (
  1916. SELECT temp.available_points FROM (SELECT t.available_points,t.certificate_no,row_number()OVER(PARTITION BY t.certificate_no ORDER BY t.gmt_created DESC) rd FROM dsj.t_account t) temp WHERE temp.rd = 1 AND temp.certificate_no = si.idcard
  1917. );
  1918. dbms_output.put_line('up_other_customerinfo函数跑批完成!');
  1919. EXCEPTION
  1920. WHEN HIVE_EXCEPTION THEN
  1921. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1922. WHEN Others THEN
  1923. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1924. END;
  1925. CREATE OR REPLACE PROCEDURE shanglifeecif.up_t_customers_class_1() -- 创建存储过程
  1926. IS
  1927. BEGIN
  1928. UPDATE shanglifeecif.individual a SET (
  1929. CustClass ,-- 客户等级
  1930. ConValue ,-- 贡献度分
  1931. Awarded3 ,-- 家庭加分2
  1932. Awarded2 ,-- 续期加分
  1933. Awarded1 ,-- 保单加分
  1934. SOValue ,-- 总分值
  1935. EndDate, -- 客户等级失效日期
  1936. Height, --身高
  1937. Weight, --体重
  1938. BMI,
  1939. PIncome, --个人年收入
  1940. FIncome, --家庭年收入
  1941. IncomeSource, --收入来源
  1942. SIStatus, --社保情况
  1943. --Ethnic, --民族情况
  1944. Nation, --国籍
  1945. MaritalStat, --婚姻
  1946. Employer,--工作单位
  1947. --Education,--学历
  1948. Dday, --死亡日期
  1949. regtype, --户籍类型
  1950. ZIPCODE,--邮编
  1951. HPhone,--电话
  1952. PMPhone,--手机
  1953. email, -- 邮箱
  1954. RAL, --联系地址
  1955. sobirth --省份
  1956. ) = (
  1957. select
  1958. b.CLASS_VALUE,--客户等级
  1959. b.CONTRIBUTION_VALUE,--贡献度分
  1960. b.AWARDED3, --家庭加分
  1961. b.AWARDED2, --续期加分
  1962. b.AWARDED1, --保单加分
  1963. b.TOTAL_VALUE, --总分值
  1964. trim(b.END_DATE) as END_DATE, --失效日期
  1965. b.STATURE, --身高
  1966. b.AVOIRDUPOIS,--体重
  1967. b.BMI, --根据身高体重计算
  1968. b.YEARINCOME, --个人年收入
  1969. b.FAMILYYEARSALARY, --家庭年收入
  1970. trim(b.INCOMESOURCE) as INCOMESOURCE, --收入来源
  1971. trim(b.SOCIALINSUFLAG) as SOCIALINSUFLAG, --社保情况
  1972. --trim(b.NATIONALITY) as NATIONALITY, --民族情况
  1973. trim(b.NATIVEPLACE) as NATIVEPLACE, --国籍
  1974. trim(b.MARRIAGE) as MARRIAGE,--婚姻
  1975. trim(b.GRPNAME) as GRPNAME,--工作单位名称
  1976. --trim(b.DEGREE) as DEGREE,--学历
  1977. trim(b.DEATHDATE) as DEATHDATE,--死亡日期
  1978. trim(b.DENTYPE) as DENTYPE,--户籍类型
  1979. trim(b.ZIPCODE) as ZIPCODE,--邮编
  1980. trim(b.PHONE) as PHONE,--电话
  1981. trim(b.MOBILE) as MOBILE,--手机
  1982. trim(b.EMAIL) as EMAIL,--邮箱
  1983. regexp_replace(trim(b.POSTALADDRESS),'[0-90-9]','*') as POSTALADDRESS, --联系地址
  1984. regexp_extract(b.POSTALADDRESS,'(.*?)省|(.*?)市',0) -- 省份
  1985. from dsj.t_customer_class b
  1986. where b.CUSTOMER_ID = a.scustid
  1987. ) WHERE 1=1 ;
  1988. dbms_output.put_line('up_t_customers_class_1函数跑批完成!');
  1989. EXCEPTION
  1990. WHEN HIVE_EXCEPTION THEN
  1991. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1992. WHEN Others THEN
  1993. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1994. END;
  1995. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuranceclaimthread_add_salecom()
  1996. IS
  1997. BEGIN
  1998. UPDATE shanglifeecif.insuranceclaimthread insd
  1999. SET (
  2000. insd.SALECOM,
  2001. insd.salecomname
  2002. )
  2003. =(SELECT t.salecom , t.salecomname FROM
  2004. (
  2005. SELECT
  2006. contno, salecom , salecomname
  2007. FROM dsj.policy_information t
  2008. GROUP BY contno , salecom , salecomname
  2009. ) t WHERE t.contno = insd.policyno
  2010. -- AND t.contno in('2019012400157198','2019071600119318')
  2011. )
  2012. dbms_output.put_line('update_insuranceclaimthread add saleCome 函数跑批完成!');
  2013. EXCEPTION
  2014. WHEN HIVE_EXCEPTION THEN
  2015. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2016. WHEN Others THEN
  2017. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2018. END;
  2019. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuredinfo()
  2020. IS
  2021. BEGIN
  2022. --更新被保人信息
  2023. UPDATE shanglifeecif.individual a SET (
  2024. ZIPCODE,--邮编
  2025. HPhone,--电话
  2026. PMPhone,--手机
  2027. email, -- 邮箱
  2028. RAL, --联系地址
  2029. sobirth --省份
  2030. ) = (
  2031. SELECT
  2032. t.zipcode,
  2033. t.phone,
  2034. t.mobile,
  2035. t.email,
  2036. regexp_replace(trim(t.address),'[0-9]','*') address,
  2037. regexp_extract(t.address,'(.*?)省|(.*?)市',0) province
  2038. FROM (
  2039. SELECT
  2040. row_number()OVER(PARTITION BY ls.customerno ORDER BY ls.modifydate desc) rn,
  2041. ls.customerno,--客户号
  2042. CASE
  2043. WHEN ls.postaladdress IS NULL
  2044. THEN
  2045. CASE WHEN ls.homeaddress IS NULL THEN ls.companyaddress ELSE ls.homeaddress END
  2046. ELSE ls.postaladdress
  2047. END AS address,
  2048. ls.phone,
  2049. ls.zipcode,--邮编
  2050. CASE WHEN ls.email IS NULL THEN ls.email2 ELSE ls.email END AS email,
  2051. CASE WHEN ls.mobile IS NULL THEN ls.mobile2 ELSE ls.mobile END AS mobile
  2052. FROM dsj.lcaddress ls
  2053. ) t where t.rn = 1 AND t.customerno = a.scustid
  2054. ) WHERE a.custtype = '被保人';
  2055. UPDATE shanglifeecif.individual a SET (
  2056. Height, --身高
  2057. Weight, --体重
  2058. BMI,
  2059. PIncome, --个人年收入
  2060. Ethnic, --民族情况
  2061. Nation, --国籍
  2062. MaritalStat, --婚姻
  2063. Education,--学历
  2064. SIStatus,--社保
  2065. IncomeSource,--收入来源
  2066. Occupation,--职业
  2067. regtype --户籍类型
  2068. ) = (
  2069. SELECT
  2070. t.stature,--身高
  2071. t.avoirdupois,--体重
  2072. t.bmi,
  2073. t.yearincome,
  2074. t.nationality,--民族
  2075. t.nativeplace,--国籍
  2076. t.marriage, --婚姻状况
  2077. t.degree, --学历
  2078. t.socialinsuflag,--社保
  2079. t.incomesource,--收入来源
  2080. t.occupationcode,--职业
  2081. t.dentype
  2082. FROM (
  2083. SELECT
  2084. row_number()OVER(PARTITION BY ld.insuredno ORDER BY ld.modifydate desc) rn,
  2085. ld.insuredno,--被保人客户号
  2086. ld.appntno,--投保人客户号
  2087. ld.name,--被保人名称
  2088. ld.sex,--被保人性别
  2089. ld.birthday,--被保人出生日期
  2090. ld.idtype,--证件类型
  2091. ld.idno,--证件号码
  2092. ld.marriage,--婚姻状况
  2093. ld.occupationcode,--职业
  2094. ld.nativeplace,--国籍
  2095. ld.nationality,--民族
  2096. ld.stature,--身高
  2097. ld.avoirdupois,--体重
  2098. round((ld.avoirdupois/POWER((ld.stature/100),2)),2) bmi,
  2099. ld.degree,--学历
  2100. ld.dentype,--居民类型
  2101. ld.socialinsuflag,--社保情况
  2102. ld.incomesource,--收入来源
  2103. ld.yearincome --年收入
  2104. FROM dsj.lcinsured2 ld
  2105. ) t WHERE t.rn = 1 AND t.insuredno = a.scustid
  2106. ) WHERE a.custtype = '被保人';
  2107. dbms_output.put_line('update_insuredinfo函数跑批完成!');
  2108. EXCEPTION
  2109. WHEN HIVE_EXCEPTION THEN
  2110. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2111. WHEN Others THEN
  2112. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2113. END;
  2114. CREATE OR REPLACE PROCEDURE shanglifeecif.update_partytimeline_add_salecom()
  2115. IS
  2116. BEGIN
  2117. UPDATE shanglifeecif.partytimeline pt SET (pt.salecom,pt.salecomname) =
  2118. (
  2119. SELECT t.salecom, t.salecomname FROM
  2120. (
  2121. SELECT
  2122. contno, salecom, salecomname
  2123. FROM dsj.policy_information t
  2124. GROUP BY contno, salecom, salecomname
  2125. ) t WHERE t.contno = pt.policyno
  2126. )
  2127. dbms_output.put_line('update_partytimeline_add_salecom 函数跑批完成!');
  2128. EXCEPTION
  2129. WHEN HIVE_EXCEPTION THEN
  2130. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2131. WHEN Others THEN
  2132. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2133. END;
  2134. CREATE OR REPLACE PROCEDURE shanglifeecif.update_risk_categories() -- 创建主存储过程
  2135. IS
  2136. BEGIN
  2137. --更新险种大类
  2138. UPDATE shanglifeecif.insurancearrangement a SET (
  2139. risk_categories_name
  2140. ) = (
  2141. select
  2142. kindtype
  2143. from dsj.riskkind b WHERE a.productid = b.riskcode
  2144. ) WHERE 1=1;
  2145. dbms_output.put_line('update_risk_categories函数跑批完成!');
  2146. EXCEPTION
  2147. WHEN HIVE_EXCEPTION THEN
  2148. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2149. WHEN Others THEN
  2150. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2151. END;
  2152. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  2153. DECLARE
  2154. BEGIN
  2155. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  2156. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  2157. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  2158. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  2159. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  2160. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  2161. --4 年龄区间 label4 "case age when 0<=age and age<13 then '儿童' when 13<=age and age<19 then '少年' when 19<=age and age<41 then '青年' when 41<=age and age<66 then '中年' --else '老年'" 儿童、少年、青年、中年、老年
  2162. --UPDATE shanglifeecif.Individual si1 SET si1.label4 = (SELECT CASE WHEN temp.age>=0 AND temp.age<13 THEN '儿童' WHEN temp.age>=13 AND temp.age <19 THEN '少年' WHEN temp.age -->=19 AND temp.age <41 THEN '青年' WHEN temp.age >=41 AND temp.age <66 THEN '中年' ELSE '老年' END FROM (SELECT TRUNC(months_between(sysdate, si2.birthday)/12) age,si2.indid --FROM shanglifeecif.Individual si2) temp WHERE temp.indid = si1.indid);
  2163. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  2164. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  2165. --7 婚姻状况 label9 "根据婚姻状态字段判断 case maritalStat when maritalStat=1 then '未婚' when maritalStat=2 then '已婚' when maritalStat=3 then '丧偶' when maritalStat=4 --then '离异' else null" 1未婚、2已婚、3丧偶、4离异
  2166. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  2167. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  2168. --case si1.maritalStat
  2169. --when 1 then '未婚'
  2170. --when 2 then '已婚'
  2171. --when 3 then '丧偶'
  2172. --when 4 then '离异'
  2173. --else NULL END
  2174. --) WHERE 1 = 1;
  2175. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  2176. --else null" 无子女、1孩、2孩及以上
  2177. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  2178. SELECT nvl(t.cnum,0) FROM (
  2179. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  2180. WHERE si.rstype = '子女' GROUP BY si.indid1
  2181. ) t WHERE t.indid1 = si1.scustid
  2182. ) ;
  2183. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  2184. case
  2185. when si1.COChild=0 then '无子女'
  2186. when si1.COChild=1 then '1孩'
  2187. when si1.COChild>=2 then '2孩及以上'
  2188. else null END
  2189. ) WHERE si1.cochild is not null;
  2190. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  2191. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  2192. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  2193. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  2194. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  2195. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  2196. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  2197. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  2198. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  2199. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  2200. --根据数据判断单位应该是万元,这里都除以10000做判断
  2201. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  2202. CASE
  2203. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  2204. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  2205. WHEN si1.pincome > 100 THEN '富人'
  2206. else null END
  2207. ) where 1 = 1;
  2208. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  2209. --else null" 无车,1辆车,2辆车及以上
  2210. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  2211. CASE
  2212. WHEN si1.COVehicle ==0 THEN '无车'
  2213. WHEN si1.COVehicle == 1 THEN '1辆车'
  2214. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  2215. ELSE NULL END
  2216. ) where 1 = 1;
  2217. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  2218. --else null" 无房,1套房,2套房及以上
  2219. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  2220. CASE
  2221. WHEN si1.CORP ==0 THEN '无房'
  2222. WHEN si1.CORP == 1 THEN '1套房'
  2223. WHEN si1.CORP > 1 THEN '2套房以上'
  2224. else null END
  2225. ) where 1 = 1;
  2226. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  2227. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  2228. (SELECT p.customerno FROM dsj.policy_information p,dsj.riskkind l WHERE p.riskcode = l.riskcode AND p.appflag = '有效' AND (l.kindtype = '新型寿险' OR l.kindtype = '人寿保险'));
  2229. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  2230. --case pCount when pCount=1 then '1件' when pCount=2 then '2件' when pCount>2 and pCount<6 then '3-5件' when pCount>5 and pCount<11 then '6-10件'
  2231. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  2232. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  2233. --第一步 更新 Individual.NOVPolicy 有效记录数
  2234. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  2235. --SELECT temp.customerno,count(*) AS cnum FROM (
  2236. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  2237. --) temp GROUP BY temp.customerno
  2238. --) t WHERE t.customerno = si1.scustid);
  2239. --第二步 更新 Individual.NOIVPolicy 无效记录数
  2240. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  2241. --SELECT temp.customerno,count(*) AS cnum FROM (
  2242. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  2243. --) temp GROUP BY temp.customerno
  2244. --) t WHERE t.customerno = si1.scustid);
  2245. --第三步
  2246. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  2247. --CASE
  2248. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  2249. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  2250. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  2251. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  2252. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  2253. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  2254. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  2255. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  2256. --END ) where 1 = 1;
  2257. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  2258. --CASE
  2259. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  2260. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  2261. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  2262. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  2263. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  2264. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  2265. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  2266. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  2267. --END
  2268. --) where 1 = 1;
  2269. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  2270. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  2271. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2272. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  2273. )
  2274. );
  2275. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  2276. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  2277. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  2278. SELECT
  2279. CASE
  2280. WHEN temp.cnt >0 THEN
  2281. '有极短意外险'
  2282. END
  2283. FROM
  2284. (
  2285. SELECT
  2286. count(1) cnt,
  2287. policy.customerno
  2288. FROM
  2289. policy_information policy
  2290. where
  2291. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  2292. and
  2293. policy.riskperiod='短期险'
  2294. and
  2295. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2296. GROUP BY
  2297. policy.customerno
  2298. ) temp
  2299. WHERE temp.customerno = si1.scustid
  2300. );*/
  2301. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  2302. SELECT
  2303. CASE
  2304. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  2305. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  2306. END
  2307. FROM (
  2308. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2309. SELECT
  2310. count(1) cnt,
  2311. po.customerno
  2312. FROM
  2313. dsj.policy_information po
  2314. where
  2315. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2316. and
  2317. po.riskperiod='短期险'
  2318. and
  2319. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2320. GROUP BY
  2321. po.customerno
  2322. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  2323. ) temp where temp.customerno = si1.scustid
  2324. );
  2325. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  2326. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  2327. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv = '趸缴' and p.riskperiod = '长期险' AND p.contno IN (SELECT l.contno FROM dsj.PREMIUM_LIST l WHERE l.PAYMENT_PERIOD LIKE '%一次交清%')
  2328. );
  2329. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  2330. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  2331. SELECT
  2332. CASE
  2333. WHEN tt.bnum = 0 THEN '本人未投保'
  2334. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  2335. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  2336. END
  2337. FROM (
  2338. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2339. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno
  2340. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2341. ) tt WHERE tt.customerno = si1.scustid
  2342. );
  2343. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  2344. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  2345. SELECT
  2346. CASE
  2347. WHEN tt.bnum = 0 THEN '父母未投保'
  2348. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  2349. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  2350. END
  2351. FROM (
  2352. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2353. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  2354. GROUP BY p.customerno
  2355. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2356. ) tt WHERE tt.customerno = si1.scustid
  2357. );
  2358. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  2359. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  2360. SELECT
  2361. CASE
  2362. WHEN tt.bnum = 0 THEN '子女未投保'
  2363. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  2364. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  2365. END
  2366. FROM (
  2367. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2368. SELECT nvl(count(*),0) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday < p.insuredbirthday GROUP BY p.customerno
  2369. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2370. ) tt WHERE tt.customerno = si1.scustid
  2371. );
  2372. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  2373. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  2374. SELECT
  2375. CASE
  2376. WHEN tt.bnum = 0 THEN '配偶未投保'
  2377. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  2378. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  2379. END
  2380. FROM (
  2381. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2382. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno
  2383. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2384. ) tt WHERE tt.customerno = si1.scustid
  2385. );
  2386. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  2387. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  2388. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  2389. SELECT
  2390. CASE
  2391. WHEN temp.cnt >0 THEN
  2392. '有1年期短险保单'
  2393. END
  2394. FROM
  2395. (
  2396. SELECT
  2397. count(1) cnt,
  2398. policy.customerno
  2399. FROM
  2400. policy_information policy
  2401. where
  2402. policy.SECURITY in('1年','6月','180天')
  2403. and
  2404. policy.riskperiod='短期险'
  2405. and
  2406. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2407. GROUP BY
  2408. policy.customerno
  2409. ) temp
  2410. WHERE
  2411. temp.customerno = si1.scustid
  2412. );*/
  2413. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  2414. SELECT
  2415. CASE
  2416. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  2417. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  2418. END
  2419. FROM (
  2420. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2421. SELECT
  2422. count(1) cnt,
  2423. po.customerno
  2424. FROM
  2425. dsj.policy_information po
  2426. where
  2427. po.SECURITY in('1年','6月','180天')
  2428. and
  2429. po.riskperiod='短期险'
  2430. and
  2431. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2432. GROUP BY
  2433. po.customerno
  2434. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  2435. ) temp where temp.customerno = si1.scustid
  2436. );
  2437. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  2438. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  2439. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' and state = '1')
  2440. );
  2441. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  2442. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  2443. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  2444. );
  2445. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  2446. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  2447. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2448. select otherno from dsj.ljspay where othernotype = '2'
  2449. )
  2450. );
  2451. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  2452. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  2453. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  2454. );
  2455. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  2456. --第一步
  2457. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  2458. SELECT fadate FROM (
  2459. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  2460. ) t WHERE t.customerno = si1.scustid
  2461. );
  2462. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  2463. SELECT fadate FROM (
  2464. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  2465. ) t WHERE t.insuredno = si1.scustid
  2466. );
  2467. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  2468. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  2469. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  2470. SELECT fadate FROM (
  2471. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  2472. ) t WHERE t.customerno = si1.scustid
  2473. );
  2474. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  2475. SELECT fadate FROM (
  2476. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  2477. ) t WHERE t.insuredno = si1.scustid
  2478. );
  2479. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  2480. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  2481. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  2482. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  2483. WHERE p.salecomname IS NOT null
  2484. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2485. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  2486. --SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.SALECHNL FROM POLICY_INFORMATION p WHERE p.salechnl IS NOT null
  2487. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2488. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  2489. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  2490. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  2491. -- SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.AGENTCOM FROM POLICY_INFORMATION p WHERE p.salechnl IS NOT null
  2492. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2493. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  2494. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  2495. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  2496. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.salecomname FROM dsj.POLICY_INFORMATION p WHERE p.salecomname IS NOT null
  2497. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2498. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  2499. --SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.SALECHNL FROM POLICY_INFORMATION p WHERE p.salechnl IS NOT null
  2500. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2501. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  2502. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  2503. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  2504. -- SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate ASC) rd,p.AGENTCOM FROM POLICY_INFORMATION p WHERE p.salechnl IS NOT null
  2505. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2506. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  2507. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  2508. /*
  2509. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  2510. (SELECT
  2511. (CASE temp.appflag
  2512. WHEN '0' THEN '最近保单状态未承保'
  2513. WHEN '1' THEN '最近保单状态承保'
  2514. WHEN '2' THEN '最近保单状态新增附加险'
  2515. WHEN '4' THEN '最近保单状态终止'
  2516. WHEN '9' THEN '最近保单状态续保'
  2517. WHEN 'B' THEN '最近保单状态未对账'
  2518. WHEN 'F' THEN '最近保单状态对账失败'
  2519. END) a
  2520. FROM (
  2521. SELECT t.appflag,p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate desc) rd FROM dsj.policy_information p,dsj.lccont t WHERE p.contno = t.contno
  2522. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  2523. */
  2524. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  2525. SELECT '最近保单状态'||trim(t.appflag) FROM (
  2526. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  2527. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2528. );
  2529. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  2530. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  2531. SELECT '客户最近一次办理'||t.edorname FROM (
  2532. SELECT
  2533. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  2534. l.edortype,
  2535. l.contno,
  2536. p.customerno,
  2537. l.edorappdate,
  2538. l.edorstate,
  2539. lm.edorcode,
  2540. lm.edorname
  2541. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  2542. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  2543. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2544. ) WHERE 1 = 1;
  2545. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  2546. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  2547. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2548. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  2549. )
  2550. );
  2551. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  2552. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  2553. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  2554. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  2555. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2556. );
  2557. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  2558. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  2559. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  2560. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  2561. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2562. );
  2563. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  2564. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  2565. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  2566. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  2567. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2568. );
  2569. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  2570. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  2571. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  2572. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2573. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  2574. )
  2575. );
  2576. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  2577. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  2578. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  2579. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2580. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  2581. ) and p.appflag = '有效'
  2582. );
  2583. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  2584. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  2585. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  2586. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  2587. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2588. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  2589. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  2590. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  2591. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  2592. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  2593. GROUP BY pi.customerno
  2594. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  2595. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  2596. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  2597. SELECT temp.customerno FROM (
  2598. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2599. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  2600. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2601. GROUP BY pi.customerno
  2602. ) temp WHERE temp.tnum = temp.pnum
  2603. );
  2604. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  2605. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  2606. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  2607. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  2608. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  2609. WHERE p.appflag = '有效' GROUP BY p.customerno
  2610. ) t WHERE t.pnum > 0);
  2611. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  2612. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  2613. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  2614. CASE si1.CustClass
  2615. WHEN 1 THEN '钻石客户'
  2616. WHEN 2 THEN '白金客户'
  2617. WHEN 3 THEN '黄金客户'
  2618. --WHEN 4 THEN '普通级别'
  2619. --ELSE '无级别'
  2620. ELSE ''
  2621. END
  2622. ) where 1 = 1;
  2623. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  2624. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  2625. SELECT '最近'||t.scenario FROM (
  2626. SELECT
  2627. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  2628. pl.partyid,
  2629. pl.scenario
  2630. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  2631. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  2632. );
  2633. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  2634. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  2635. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  2636. SELECT
  2637. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  2638. pl.partyid,
  2639. pl.scenario
  2640. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  2641. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  2642. );
  2643. --77 是否关注官微 Label73 关注官微 无 0
  2644. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  2645. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  2646. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  2647. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  2648. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  2649. --78 是否注册官微 Label74 注册官微 无 0
  2650. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  2651. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2652. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2653. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2654. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  2655. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  2656. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2657. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2658. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  2659. );
  2660. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  2661. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2662. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2663. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  2664. );
  2665. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  2666. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  2667. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  2668. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(si1.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND DATEDIFF(to_char(si1.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0;
  2669. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  2670. SELECT scustid FROM (
  2671. SELECT * FROM (
  2672. SELECT scustid , birthday , month(current_date() ) nowmonth ,month(date_add(current_date(),5)) nextmonth ,month(to_date(birthday)) usermonth , day(current_date() ) nowday ,day(date_add(current_date(),5)) nextday
  2673. , day(to_date(birthday)) userday from shanglifeecif.Individual
  2674. )
  2675. WHERE
  2676. (nowmonth != nextmonth AND
  2677. (
  2678. (nowmonth== usermonth AND userday> nowday )
  2679. or (nextmonth == usermonth AND userday <= nextday )
  2680. )
  2681. )
  2682. OR (nowmonth == nextmonth AND nowmonth = usermonth AND userday > nowday AND userday <=nextday )
  2683. )
  2684. );
  2685. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' WHERE si1.scustid IN (
  2686. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2687. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2688. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '父亲'
  2689. );
  2690. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  2691. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2692. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2693. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  2694. );
  2695. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  2696. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2697. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2698. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  2699. );
  2700. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' WHERE si1.scustid IN (
  2701. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2702. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2703. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '女儿'
  2704. );
  2705. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  2706. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  2707. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2708. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  2709. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  2710. );
  2711. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2712. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  2713. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2714. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  2715. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2716. );
  2717. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2718. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  2719. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2720. DATEDIFF(p.paytodate,to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S')) > 0 and DATEDIFF(p.paytodate,to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S')) < 5
  2721. );
  2722. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2723. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  2724. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2725. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2726. );
  2727. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2728. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2729. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2730. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  2731. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2732. GROUP BY pi.customerno
  2733. ) temp WHERE temp.tnum = temp.pnum);
  2734. --失效原因
  2735. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  2736. SELECT '有'||t.terminatestate||'保单' FROM (
  2737. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2738. WHERE p.appflag = '失效'
  2739. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2740. );
  2741. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  2742. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2743. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2744. --SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag = '终止' AND p.enddate < to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') GROUP BY p.customerno
  2745. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2746. --GROUP BY pi.customerno
  2747. --) temp WHERE temp.tnum = temp.pnum);
  2748. --终止原因
  2749. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  2750. SELECT '有'||t.terminatestate||'保单' FROM (
  2751. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2752. WHERE p.appflag = '终止'
  2753. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2754. );
  2755. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  2756. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2757. --SELECT
  2758. --CASE
  2759. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  2760. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  2761. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  2762. --END
  2763. -- FROM (
  2764. -- SELECT row_number()over(PARTITION BY t.appntno ORDER BY t.confdate DESC) rn,t.appntno,t.paydate as topaydate,t.confdate as toconfdate,DATE_ADD(t.paydate,60) as --kxdate,tt.paydate as lastpaydate,tt.confdate AS lastconfdate,DATEDIFF(to_char(t.confdate,'0000-MM-dd'),to_char(tt.confdate,'0000-MM-dd')) AS dnum FROM (
  2765. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  2766. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  2767. -- ) t LEFT JOIN (
  2768. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  2769. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  2770. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  2771. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  2772. --) WHERE 1 = 1;
  2773. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2774. -- SELECT
  2775. -- CASE
  2776. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  2777. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  2778. -- WHEN t.dnum>60 THEN '宽限期外交费'
  2779. -- END
  2780. -- FROM (
  2781. -- SELECT row_number()over(PARTITION BY p.customerno ORDER BY p.confdate DESC) rn,p.customerno,DATEDIFF(to_char(p.confdate,'0000-MM-dd'),to_char(p.polapplydate,'0000-MM-dd')) AS dnum FROM dsj.policy_information p
  2782. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  2783. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  2784. --) WHERE 1 = 1;
  2785. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2786. SELECT
  2787. CASE
  2788. WHEN t.dnum=0 THEN '上一年如期缴费'
  2789. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  2790. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  2791. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  2792. END
  2793. FROM (
  2794. SELECT
  2795. row_number()over(PARTITION BY l.appntno ORDER BY l.confdate DESC) rn,l.appntno,DATEDIFF(to_char(l.confdate,'0000-MM-dd'),to_char(l.curpaytodate,'0000-MM-dd')) AS dnum
  2796. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  2797. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  2798. ) WHERE 1 = 1;
  2799. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  2800. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  2801. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2802. SELECT contnos from dsj.cc_record_main
  2803. )
  2804. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  2805. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  2806. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  2807. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2808. SELECT contnos from dsj.cc_record_main
  2809. )
  2810. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  2811. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  2812. UPDATE shanglifeecif.Individual si1 SET si1.Label100 = (CASE WHEN si1.occupation like '%记者%' OR si1.occupation like '%律师%' OR si1.occupation like '%公务员%' OR si1.occupation like '%媒体%' OR si1.occupation like '%金融行业%' THEN '敏感职业' END ) WHERE 1 = 1;
  2813. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  2814. --103 长通话 Label101 长通话 "contnos为客户的保单号 select (select lo.call_length from ucc_rms_recorderlog lo where lo.call_id=m.call_id) as lenth from cc_record_main m
  2815. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  2816. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  2817. SELECT '长通话' FROM (
  2818. SELECT
  2819. t.contnos,
  2820. row_number()OVER(PARTITION BY p.customerno) rn,
  2821. p.customerno
  2822. FROM (
  2823. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  2824. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  2825. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  2826. GROUP BY m.contnos
  2827. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  2828. WHERE t.avgcalltime>600
  2829. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  2830. );
  2831. --105 要求较多 Label103 要求较多 "policyno为客户的保单号 flowid like'ZX%'转办标志 Z select (select r.idname from cc_swf_sort r where r.id=f.complaintProject) as --swfName --from cc_swfflowmain f where f.policyno='2020021500000456' and flowid like'ZX%'" 每次来电均下转办单的
  2832. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  2833. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2834. SELECT temp.policyno FROM (
  2835. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2836. SELECT m.contnos policyno,count(*) AS mnum,'' AS fnum FROM dsj.cc_record_main m WHERE m.contnos IS NOT NULL GROUP BY m.contnos
  2837. UNION
  2838. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  2839. )t GROUP BY t.policyno
  2840. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  2841. )
  2842. );
  2843. --106 易投诉升级 Label104 易投诉升级 "flowid like'ZX%'转办标志 Z select (select r.idname from cc_swf_sort r where r.id=f.complaintProject and r.idname='投诉') as swfName --from cc_swfflowmain f where f.policyno='2020021500000456' and flowid like'ZX%'" 咨询转办单项目为投诉
  2844. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  2845. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2846. SELECT temp.policyno FROM (
  2847. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2848. SELECT m.contnos policyno,count(*) AS mnum,'' AS fnum FROM dsj.cc_record_main m WHERE m.contnos IS NOT NULL GROUP BY m.contnos
  2849. UNION
  2850. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f,dsj.cc_swf_sort r WHERE r.id=f.complaintProject and f.modelno = 1 AND r.idname='投诉' GROUP BY f.policyno
  2851. )t GROUP BY t.policyno
  2852. ) temp WHERE temp.mnum = temp.fnum
  2853. )
  2854. );
  2855. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  2856. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  2857. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  2858. --(SELECT temp.productno FROM (
  2859. --SELECT t.productno,t.sinserttime,
  2860. --(SELECT tt.inserttime FROM (SELECT cad.inserttime,row_number()OVER(PARTITION BY cad.productno ORDER BY cad.inserttime) rownum,cad.productno FROM dsj.cc_action_complaints --ca,dsj.cc_action_data_complaints cad
  2861. --WHERE cad.complaintsid=ca.complaintsid AND cad.productno IS NOT NULL) tt WHERE tt.productno = t.productno AND tt.rownum = t.rn+1) AS esinserttime
  2862. -- FROM
  2863. --(
  2864. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  2865. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  2866. --) t
  2867. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  2868. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  2869. SELECT t.customerno FROM (
  2870. SELECT
  2871. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2872. t1.customerno,
  2873. t1.contno,
  2874. ca.inserttime FROM (
  2875. SELECT
  2876. max(p.customerno) customerno,
  2877. p.contno
  2878. FROM dsj.policy_information p GROUP BY p.contno
  2879. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2880. ) t LEFT JOIN (
  2881. SELECT
  2882. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2883. t1.customerno,
  2884. t1.contno,
  2885. ca.inserttime FROM (
  2886. SELECT
  2887. max(p.customerno) customerno,
  2888. p.contno
  2889. FROM dsj.policy_information p GROUP BY p.contno
  2890. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2891. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  2892. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  2893. );
  2894. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  2895. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  2896. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  2897. SELECT
  2898. CASE
  2899. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  2900. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  2901. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  2902. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  2903. select group_concat((case c.complaintsSource
  2904. when '911' then '来电'
  2905. when '912' then '来访'
  2906. when '913' then '来函'
  2907. when '914' then '保监会转办'
  2908. when '919' then '保监局转办'
  2909. when '915' then '媒体转办'
  2910. when '916' then '同业公会'
  2911. when '917' then '其他转办'
  2912. when '918' then '呼出'
  2913. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  2914. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  2915. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  2916. ) tt WHERE tt.customerno = si1.scustid
  2917. );
  2918. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  2919. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  2920. --02个险渠道 期缴 大于20000以上
  2921. --03银保渠道 期缴 大于50000以上
  2922. --06健康险 期缴 大于 20000以上
  2923. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  2924. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  2925. p.appflag = '有效' AND p.payintv = '期缴' and
  2926. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  2927. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  2928. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  2929. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  2930. );
  2931. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  2932. UPDATE shanglifeecif.Individual si1 SET si1.Label109 = '理赔报案追踪' WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (SELECT c.CONTNO FROM dsj.insurance_claim c WHERE c.LLCLAIMSTATE = '报案' AND DATEDIFF(sysdate(), c.RPTDATE) <30) );
  2933. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  2934. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  2935. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (SELECT c.contno FROM dsj.INSURANCE_CLAIM c WHERE c.llclaimstate = '受理' OR c.llclaimstate = '立案')
  2936. );
  2937. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  2938. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  2939. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2940. SELECT l.contno FROM dsj.lpedoritem l WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),l.edorappdate) < 15 AND l.edorstate = '0'
  2941. )
  2942. );
  2943. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  2944. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  2945. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2946. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  2947. )
  2948. );
  2949. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  2950. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  2951. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2952. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  2953. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  2954. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  2955. )
  2956. );
  2957. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  2958. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  2959. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  2960. DATEDIFF(DATE_ADD(p.paytodate, 60),to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S')) > 0 AND DATEDIFF(DATE_ADD(p.paytodate, 60),to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S')) < 3
  2961. );
  2962. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  2963. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  2964. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  2965. dbms_output.put_line('updateindividuallable函数跑批完成!');
  2966. EXCEPTION
  2967. WHEN HIVE_EXCEPTION THEN
  2968. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2969. WHEN Others THEN
  2970. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2971. END