存储过程.sql 127 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209
  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 = '至100周岁' then 36500
  1005. when security = '至80周岁' then 29200
  1006. when security = '70年' then 25550
  1007. when security = '至70周岁' then 25550
  1008. when security = '至65周岁' then 23725
  1009. when security = '至60周岁' then 21900
  1010. when security = '30年' then 10950
  1011. when security = '20年' then 7300
  1012. when security = '10年' then 3650
  1013. when security = '6年' then 2190
  1014. when security = '5年' then 1825
  1015. when security = '1年' then 365
  1016. when security = '180天' then 180
  1017. when security = '6月' then 180
  1018. when security = '90天' then 90
  1019. when security = '3月' then 90
  1020. when security = '1月' then 30
  1021. when security = '30天' then 30
  1022. when security = '15天' then 15
  1023. when security = '7天' then 7
  1024. end,
  1025. trim(AGENTCODE) as AGENTCODE,--代理人代码
  1026. trim(AGENTNAME) as AGENTNAME,--代理人名称
  1027. trim(paytodate) as paytodate,--续保日期
  1028. 'admin',
  1029. sysdate()
  1030. FROM dsj.policy_information;
  1031. --更新INSURANCEINFO 表中的信息
  1032. UPDATE shanglifeecif.insurancearrangement a SET (
  1033. pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1034. --pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1035. --padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1036. --policystate ,--INSURANCEINFO,appflag
  1037. --prem ,-- '总保费 INSURANCEINFO.PREM',
  1038. --productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1039. agentchannel -- '代理渠道 INSURANCEINFO.SELLTYPE',
  1040. ) = (
  1041. select
  1042. trim(b.PRTNO) as PRTNO,--pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1043. --SIGNDATE,--pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1044. --POLAPPLYDATE,--padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1045. --appflag,--policystate ,--INSURANCEINFO,appflag
  1046. --PREM,--prem ,-- '总保费 INSURANCEINFO.PREM',
  1047. --RISKNAME,--productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1048. trim(b.SELLTYPE) as SELLTYPE--agentchannel ,-- '代理渠道 INSURANCEINFO.SELLTYPE',
  1049. from dsj.INSURANCEINFO b
  1050. where b.contno = a.policyno
  1051. ) WHERE 1=1 ;
  1052. dbms_output.put_line('init_insurancearrangement_policy_information函数跑批完成!');
  1053. EXCEPTION
  1054. WHEN HIVE_EXCEPTION THEN
  1055. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1056. WHEN Others THEN
  1057. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1058. END;
  1059. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insuredno_salecom_relation() IS
  1060. DECLARE
  1061. BEGIN
  1062. -- 用户 渠道关系表
  1063. insert into shanglifeecif.insuredno_salecom_relation (
  1064. insuredno,
  1065. salecomname,
  1066. salecom
  1067. )
  1068. SELECT insuredno , salecomname ,salecom FROM (
  1069. SELECT insuredno , salecomname ,salecom FROM dsj.POLICY_INFORMATION GROUP BY insuredno , salecomname,salecom
  1070. ) t ;
  1071. dbms_output.put_line('insuredno_salecom_relation 函数跑批完成!');
  1072. EXCEPTION
  1073. WHEN HIVE_EXCEPTION THEN
  1074. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1075. WHEN Others THEN
  1076. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1077. END;
  1078. CREATE OR REPLACE PROCEDURE shanglifeecif.insuranceclaimthread_main() -- 创建主存储过程
  1079. IS
  1080. BEGIN
  1081. insert into shanglifeecif.insuranceclaimthread (
  1082. icthreadid ,--'保险理赔Id',1
  1083. crno ,--'立案号',2
  1084. --companyno ,-- '公司代码',
  1085. policyno ,--'保险单号 INSURANCE_CLAIM.CONTNO',3
  1086. --applicantid ,--'投保人ID',
  1087. --appname ,--'投保人名称',
  1088. --appphone ,--'投保人手机',
  1089. --appcertid ,--'投保人证件号码 INSURANCE_CLAIM.RISKDATE',
  1090. cnno ,--'报案号',4
  1091. losstime ,-- '损失发生时间',5
  1092. --rpid ,-- '报案人',
  1093. rpname ,--'报案人名称',6
  1094. --rpphone ,-- '报案人电话',
  1095. --lpid ,--'出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  1096. lpscutid,--'出险人上游客户号7
  1097. lpname ,-- '出险人名称',
  1098. cndate ,--'报案日期 INSURANCE_CLAIM.RPTDATE',
  1099. lossdescribe ,-- '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  1100. crdate ,-- '立案日期 INSURANCE_CLAIM.RGTDATE',
  1101. cndescribe ,--'报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  1102. claimstatus ,--'理赔状态 案件的状态,例如:录入、已立案等',
  1103. csdate ,--'理赔状态日期',
  1104. relationship ,-- '报案人与出险人关系',
  1105. ccno ,-- '赔案号 AUDIT_CLAIM_INSURANCE.CLMNO',
  1106. ccstatus ,--'赔案状态',
  1107. --ccsdate ,-- '赔案状态日期',
  1108. productid ,--'险种代码 INSURANCE_CLAIM_HEALTH.RISKCODE',
  1109. productname, --'险种名称 INSURANCE_CLAIM_HEALTH.RISKNAME',
  1110. ccamt ,--'赔付金额 INSURANCE_CLAIM_HEALTH.realpay',
  1111. --branchcode,-- '机构代码',
  1112. claimcasestatus ,--'案件状态INSURANCE_CLAIM_HEALTH.LLCLAIMSTATE',
  1113. accidenttype,
  1114. created_by ,
  1115. created_time
  1116. -- updated_time,
  1117. -- updated_by
  1118. ) select
  1119. row_number()over(),--1
  1120. trim(rgtno) as rgtno,--2
  1121. trim(contno) as contno,--3
  1122. trim(rptno) as rptno,--报案号4
  1123. trim(riskdate) as riskdate,--损失发生的时间5
  1124. trim(rptorname) as rptorname,--报案人名称6
  1125. trim(INSUREDNO) as INSUREDNO,--出险人 上游客户号
  1126. trim(INSUREDNAME) as INSUREDNAME,
  1127. trim(rptdate) as rptdate,
  1128. trim(lloccurreason) as lloccurreason,
  1129. trim(rgtdate) as rgtdate,
  1130. trim(ACCDESC) as ACCDESC,--报案描述
  1131. trim(llclaimstate) as llclaimstate,
  1132. trim(auditdate) as auditdate,--审批日期
  1133. trim(relationname) as relationname,
  1134. trim(clmno) as clmno,--赔案号
  1135. trim(llgettype) as llgettype,--赔案状态
  1136. trim(riskcode) as riskcode,
  1137. trim(riskname) as riskname,
  1138. realpay,
  1139. trim(llclaimstate) as llclaimstate,--案件状态
  1140. trim(accidenttype) as accidenttype,
  1141. 'admin',
  1142. sysdate()
  1143. from dsj.INSURANCE_CLAIM where contno is not null;
  1144. -- 更新渠道字段
  1145. shanglifeecif.update_insuranceclaimthread_add_salecom();
  1146. dbms_output.put_line('insuranceclaimthread_main函数跑批完成!');
  1147. EXCEPTION
  1148. WHEN HIVE_EXCEPTION THEN
  1149. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1150. WHEN Others THEN
  1151. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1152. END;
  1153. CREATE PROCEDURE shanglifeecif.222NewProcedure( )
  1154. IS
  1155. DECLARE
  1156. s_count int
  1157. BEGIN
  1158. DELETE FROM shanglifeecif.IndRelationShip;
  1159. --从保单信息表(dsj.POLICY_INFORMATION)获取投保人和被保人的关系并
  1160. --第一步取关系父母,子女
  1161. insert into shanglifeecif.IndRelationShip(
  1162. irsid,
  1163. RSType,
  1164. IndID1,
  1165. Name1,
  1166. IDCard1,
  1167. Role1,
  1168. IndID2,
  1169. Name2,
  1170. IDCard2,
  1171. RSSTime,
  1172. Role2
  1173. )SELECT
  1174. reflect("java.util.UUID", "randomUUID"),
  1175. '父母',
  1176. p.CUSTOMERNO,
  1177. max(p.NAME),
  1178. max(p.IDNO),
  1179. CASE max(p.sex)
  1180. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1181. p.INSUREDNO,
  1182. max(p.INSUREDNAME),
  1183. max(p.INSUREDIDNO),
  1184. min(p.polapplydate),
  1185. CASE max(p.INSUREDSEX)
  1186. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END
  1187. FROM dsj.POLICY_INFORMATION p
  1188. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1189. AND p.birthday > p.insuredbirthday
  1190. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1191. insert into shanglifeecif.IndRelationShip(
  1192. irsid,
  1193. RSType,
  1194. IndID1,
  1195. Name1,
  1196. IDCard1,
  1197. Role1,
  1198. IndID2,
  1199. Name2,
  1200. IDCard2,
  1201. RSSTime,
  1202. Role2
  1203. )
  1204. SELECT
  1205. reflect("java.util.UUID", "randomUUID"),
  1206. '子女',
  1207. p.CUSTOMERNO,
  1208. max(p.NAME),
  1209. max(p.IDNO),
  1210. CASE max(p.sex)
  1211. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1212. p.INSUREDNO,
  1213. max(p.INSUREDNAME),
  1214. max(p.INSUREDIDNO),
  1215. min(p.polapplydate),
  1216. CASE max(p.INSUREDSEX)
  1217. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END
  1218. FROM dsj.POLICY_INFORMATION p
  1219. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1220. AND p.birthday < p.insuredbirthday
  1221. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1222. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  1223. insert into shanglifeecif.IndRelationShip(
  1224. irsid,
  1225. RSType,
  1226. IndID1,
  1227. Name1,
  1228. IDCard1,
  1229. Role1,
  1230. IndID2,
  1231. Name2,
  1232. IDCard2,
  1233. RSSTime,
  1234. Role2
  1235. )SELECT
  1236. reflect("java.util.UUID", "randomUUID"),
  1237. '祖父母、外祖父母',
  1238. p.CUSTOMERNO,
  1239. max(p.NAME),
  1240. max(p.IDNO),
  1241. CASE max(p.sex)
  1242. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1243. p.INSUREDNO,
  1244. max(p.INSUREDNAME),
  1245. max(p.INSUREDIDNO),
  1246. min(p.polapplydate),
  1247. CASE max(p.INSUREDSEX)
  1248. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END
  1249. FROM dsj.POLICY_INFORMATION p
  1250. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1251. AND p.birthday > p.insuredbirthday
  1252. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1253. insert into shanglifeecif.IndRelationShip(
  1254. irsid,
  1255. RSType,
  1256. IndID1,
  1257. Name1,
  1258. IDCard1,
  1259. Role1,
  1260. IndID2,
  1261. Name2,
  1262. IDCard2,
  1263. RSSTime,
  1264. Role2
  1265. )SELECT
  1266. reflect("java.util.UUID", "randomUUID"),
  1267. '祖孙、外祖孙',
  1268. p.CUSTOMERNO,
  1269. max(p.NAME),
  1270. max(p.IDNO),
  1271. CASE max(p.sex)
  1272. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1273. p.INSUREDNO,
  1274. max(p.INSUREDNAME),
  1275. max(p.INSUREDIDNO),
  1276. min(p.polapplydate),
  1277. CASE max(p.INSUREDSEX)
  1278. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END
  1279. FROM dsj.POLICY_INFORMATION p
  1280. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1281. AND p.birthday < p.insuredbirthday
  1282. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1283. --第三步取配偶和其他
  1284. insert into shanglifeecif.IndRelationShip(
  1285. irsid,
  1286. RSType,
  1287. IndID1,
  1288. Name1,
  1289. IDCard1,
  1290. Role1,
  1291. IndID2,
  1292. Name2,
  1293. IDCard2,
  1294. RSSTime,
  1295. Role2
  1296. )SELECT
  1297. reflect("java.util.UUID", "randomUUID"),
  1298. max(p.RELATIONTOAPPNT),
  1299. p.CUSTOMERNO,
  1300. max(p.NAME),
  1301. max(p.IDNO),
  1302. CASE max(p.RELATIONTOAPPNT)
  1303. WHEN '配偶'
  1304. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1305. ELSE max(p.RELATIONTOAPPNT)
  1306. END,
  1307. p.INSUREDNO,
  1308. max(p.INSUREDNAME),
  1309. max(p.INSUREDIDNO),
  1310. min(p.polapplydate),
  1311. CASE max(p.RELATIONTOAPPNT)
  1312. WHEN '配偶'
  1313. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1314. ELSE max(p.RELATIONTOAPPNT)
  1315. END
  1316. FROM dsj.POLICY_INFORMATION p
  1317. WHERE p.RELATIONTOAPPNT = '配偶'
  1318. -- or p.RELATIONTOAPPNT = '其他'
  1319. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1320. -- 完善被保人关系
  1321. /** */
  1322. insert into shanglifeecif.IndRelationShip(
  1323. irsid,
  1324. RSType,
  1325. IndID1,
  1326. Name1,
  1327. IDCard1,
  1328. Role1,
  1329. IndID2,
  1330. Name2,
  1331. IDCard2,
  1332. Role2
  1333. )SELECT reflect("java.util.UUID", "randomUUID"),
  1334. CASE RSType
  1335. WHEN '父母' THEN '子女'
  1336. WHEN '子女' THEN '父母'
  1337. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1338. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1339. WHEN '配偶' THEN '配偶'
  1340. ELSE RSType
  1341. END,
  1342. IndID2,
  1343. Name2,
  1344. IDCard2,
  1345. Role2,
  1346. IndID1,
  1347. Name1,
  1348. IDCard1,
  1349. Role1
  1350. FROM shanglifeecif.IndRelationShip sis ;
  1351. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1352. EXCEPTION
  1353. WHEN HIVE_EXCEPTION THEN
  1354. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1355. WHEN Others THEN
  1356. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1357. END;
  1358. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_bq()
  1359. IS
  1360. DECLARE
  1361. p_count int
  1362. BEGIN
  1363. insert into shanglifeecif.partytimeline (
  1364. TripID,
  1365. PolicyNo,
  1366. PartyID,
  1367. name,
  1368. PRole,
  1369. Scenario,
  1370. SDate,
  1371. DESCRIBE,
  1372. created_by ,
  1373. created_time
  1374. )select
  1375. reflect("java.util.UUID", "randomUUID"),
  1376. i.contno,
  1377. i.customerno,
  1378. max(i.name),
  1379. '投保人' AS tbr,
  1380. '保全' AS bq,
  1381. l.edorappdate,
  1382. max(lm.edorname),
  1383. 'admin',
  1384. sysdate()
  1385. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information i
  1386. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND i.contno = l.contno
  1387. GROUP BY i.customerno,i.contno,l.edorappdate,l.edortype;
  1388. dbms_output.put_line('partytimeline_bq函数跑批完成!');
  1389. EXCEPTION
  1390. WHEN HIVE_EXCEPTION THEN
  1391. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1392. WHEN Others THEN
  1393. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1394. END
  1395. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_hf()
  1396. IS
  1397. DECLARE
  1398. p_count int
  1399. BEGIN
  1400. insert into shanglifeecif.partytimeline (
  1401. TripID,
  1402. PolicyNo,
  1403. PartyID,
  1404. name,
  1405. PRole,
  1406. Scenario,
  1407. SDate,
  1408. DESCRIBE,
  1409. created_by ,
  1410. created_time
  1411. ) SELECT
  1412. reflect("java.util.UUID", "randomUUID"),
  1413. cad.productno,
  1414. cac.customerno,
  1415. max(cac.customername),
  1416. '投保人',
  1417. '回访',
  1418. cad.lastdealtime,
  1419. CASE max(cad.actiondefguid)
  1420. when '402837815c1a4fc6015c1a735351122d' then '特殊回访'
  1421. when '402837815c1a4fc6015c1a735350012a' then '其他回访'
  1422. when '402837815c2ff6b5015c3005e7fb0004' then '失效回访'
  1423. when '402837815c2ff6b5015c3005e7fb2222' then '回执超期回访'
  1424. when '402837815c2ff6b5015c3005e7fb0003' then '宽限期50天'
  1425. when '402837815c2ff6b5015c3005e7fb0002' then '宽限期30天'
  1426. when '402837815c1a4fc6015c1a735350012f' then '新契约回访'
  1427. when '402837815c2ff6b5015c3005e7fb0001' then '续期回访'
  1428. end ,
  1429. 'admin',
  1430. sysdate()
  1431. FROM dsj.CC_ACTION_DATA cad,dsj.cc_action_customerinfo cac
  1432. WHERE cac.unioncustomerid = cad.unioncustomerid AND cad.lastdealtime IS NOT null GROUP BY cad.productno,cac.customerno,cad.lastdealtime;
  1433. dbms_output.put_line('partytimeline_hf函数跑批完成!');
  1434. EXCEPTION
  1435. WHEN HIVE_EXCEPTION THEN
  1436. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1437. WHEN Others THEN
  1438. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1439. END;
  1440. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_lp()
  1441. IS
  1442. DECLARE
  1443. p_count int
  1444. BEGIN
  1445. insert into shanglifeecif.partytimeline (
  1446. TripID,
  1447. PolicyNo,
  1448. PartyID,
  1449. name,
  1450. PCertID,
  1451. PRole,
  1452. Scenario,
  1453. SDate,
  1454. describe,
  1455. created_by ,
  1456. created_time
  1457. ) select
  1458. reflect("java.util.UUID", "randomUUID"),
  1459. trim(contno) as contno,
  1460. trim(INSUREDNO) as INSUREDNO,
  1461. trim(INSUREDNAME) as INSUREDNAME,
  1462. trim(idno) as idno,
  1463. '投保人',
  1464. '理赔',
  1465. CASE
  1466. WHEN APPLYDATE IS NOT NULL THEN APPLYDATE
  1467. WHEN APPLYDATE IS NULL THEN RPTDATE
  1468. END AS SDate,
  1469. trim(ACCIDENTTYPE) as ACCIDENTTYPE,
  1470. 'admin',
  1471. sysdate()
  1472. from dsj.insurance_claim WHERE contno IS NOT NULL;
  1473. dbms_output.put_line('partytimeline_lp函数跑批完成!');
  1474. EXCEPTION
  1475. WHEN HIVE_EXCEPTION THEN
  1476. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1477. WHEN Others THEN
  1478. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1479. END;
  1480. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_main()
  1481. IS
  1482. BEGIN
  1483. DELETE FROM shanglifeecif.partytimeline;
  1484. shanglifeecif.partytimeline_tb();
  1485. shanglifeecif.partytimeline_lp();
  1486. shanglifeecif.partytimeline_zx();
  1487. shanglifeecif.partytimeline_bq();
  1488. --shanglifeecif.partytimeline_tuibao();
  1489. shanglifeecif.partytimeline_ts();
  1490. shanglifeecif.partytimeline_hf();
  1491. shanglifeecif.partytimeline_xq();
  1492. -- 更新渠道字段
  1493. shanglifeecif.update_partytimeline_add_salecom();
  1494. END;
  1495. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tb() -- 创建主存储过程
  1496. IS
  1497. BEGIN
  1498. insert into shanglifeecif.partytimeline (
  1499. TripID,
  1500. PolicyNo,
  1501. PartyID,
  1502. name,
  1503. PCertID,
  1504. PRole,
  1505. Scenario,
  1506. SDate,
  1507. enddate,
  1508. created_by ,
  1509. created_time
  1510. ) select
  1511. reflect("java.util.UUID", "randomUUID"),
  1512. trim(contno) as contno,
  1513. trim(max(customerno)) as customerno,
  1514. trim(max(name)) as name,
  1515. trim(max(idno)) as idno,
  1516. '投保人',
  1517. '投保',
  1518. trim(max(polapplydate)) as polapplydate,
  1519. trim(max(enddate)) as enddate,
  1520. 'admin',
  1521. sysdate()
  1522. from dsj.policy_information WHERE contno IS NOT NULL GROUP BY contno;
  1523. dbms_output.put_line('partytimeline_tb函数跑批完成!');
  1524. EXCEPTION
  1525. WHEN HIVE_EXCEPTION THEN
  1526. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1527. WHEN Others THEN
  1528. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1529. END;
  1530. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_ts()
  1531. IS
  1532. DECLARE
  1533. p_count int
  1534. BEGIN
  1535. insert into shanglifeecif.partytimeline (
  1536. TripID,
  1537. PolicyNo,
  1538. PartyID,
  1539. name,
  1540. PRole,
  1541. Scenario,
  1542. SDate,
  1543. DESCRIBE,
  1544. created_by ,
  1545. created_time
  1546. ) SELECT
  1547. reflect("java.util.UUID", "randomUUID"),
  1548. max(ac.productnos),
  1549. max(i.customerno),
  1550. max(ac.complaintsname),
  1551. '投保人'||CASE max(ac.complaintsrelation)
  1552. WHEN '201' THEN ''
  1553. WHEN '202' THEN '子女'
  1554. WHEN '203' THEN '配偶'
  1555. WHEN '204' THEN '父母'
  1556. WHEN '205' THEN '其他关系'
  1557. END AS complaintsrelation,
  1558. '投诉',
  1559. ac.inserttime ,
  1560. CASE max(ac.resultclassification)
  1561. WHEN '101' THEN '销售纠纷'
  1562. WHEN '102' THEN '理赔纠纷'
  1563. WHEN '103' THEN '退保纠纷'
  1564. WHEN '104' THEN '承保纠纷'
  1565. WHEN '105' THEN '续收续保纠纷'
  1566. WHEN '106' THEN '保全纠纷'
  1567. WHEN '107' THEN '其他'
  1568. END as resultclassification,
  1569. 'admin',
  1570. sysdate
  1571. FROM dsj.cc_action_complaints ac
  1572. LEFT JOIN dsj.policy_information i ON ac.productnos = i.contno
  1573. WHERE ac.productnos IS NOT NULL AND i.customerno IS NOT NULL
  1574. GROUP BY ac.inserttime ;
  1575. dbms_output.put_line('partytimeline_ts函数跑批完成!');
  1576. EXCEPTION
  1577. WHEN HIVE_EXCEPTION THEN
  1578. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1579. WHEN Others THEN
  1580. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1581. END;
  1582. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tuibao()
  1583. IS
  1584. DECLARE
  1585. p_count int
  1586. BEGIN
  1587. insert into shanglifeecif.partytimeline (
  1588. TripID,
  1589. PolicyNo,
  1590. PartyID,
  1591. name,
  1592. PRole,
  1593. Scenario,
  1594. SDate,
  1595. DESCRIBE,
  1596. created_by ,
  1597. created_time
  1598. ) SELECT
  1599. reflect("java.util.UUID", "randomUUID"),
  1600. trim(t.contno) as contno,
  1601. trim(t.customerno) as customerno,
  1602. trim(t.name) as name,
  1603. trim(t.tbr) as tbr,
  1604. trim(t.tb) as tb,
  1605. trim(t.edorappdate) as edorappdate,
  1606. t.edorreason,
  1607. 'admin',
  1608. sysdate()
  1609. FROM (
  1610. SELECT
  1611. row_number() over(partition by i.contno) rn,
  1612. lm.contno,
  1613. i.customerno,
  1614. i.name,
  1615. '投保人' AS tbr,
  1616. '退保' AS tb,
  1617. to_char(lm.edorappdate,"yyyy-MM-dd") edorappdate,
  1618. CASE lm.edorreasoncode
  1619. WHEN '01' THEN '死亡'
  1620. WHEN '02' THEN '失踪'
  1621. WHEN '03' THEN '离异'
  1622. WHEN '04' THEN '债权转移'
  1623. WHEN '05' THEN '被保险人成年'
  1624. WHEN '06' THEN '其它'
  1625. ELSE '其它'
  1626. END AS edorreason
  1627. FROM dsj.lpedoritem lm,dsj.policy_information i
  1628. where lm.contno = i.contno AND lm.edortype='CT' AND lm.edorstate = 0
  1629. ) t WHERE t.rn = 1;
  1630. dbms_output.put_line('partytimeline_tuibao函数跑批完成!');
  1631. EXCEPTION
  1632. WHEN HIVE_EXCEPTION THEN
  1633. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1634. WHEN Others THEN
  1635. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1636. END;
  1637. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_xq() -- 创建主存储过程
  1638. IS
  1639. BEGIN
  1640. insert into shanglifeecif.partytimeline (
  1641. TripID,
  1642. PolicyNo,
  1643. PartyID,
  1644. name,
  1645. PRole,
  1646. Scenario,
  1647. SDate,
  1648. created_by ,
  1649. created_time
  1650. ) select
  1651. reflect("java.util.UUID", "randomUUID"),
  1652. lp.contno,
  1653. lp.appntno,
  1654. '',
  1655. '投保人',
  1656. '续期',
  1657. to_char(lp.confdate,'yyyy-MM-dd'),
  1658. 'admin',
  1659. sysdate
  1660. FROM dsj.ljapayperson lp WHERE lp.paycount > 1;
  1661. dbms_output.put_line('partytimeline_xq函数跑批完成!');
  1662. EXCEPTION
  1663. WHEN HIVE_EXCEPTION THEN
  1664. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1665. WHEN Others THEN
  1666. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1667. END;
  1668. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_zx()
  1669. IS
  1670. DECLARE
  1671. p_count int
  1672. BEGIN
  1673. insert into shanglifeecif.partytimeline (
  1674. TripID,
  1675. PolicyNo,
  1676. PartyID,
  1677. name,
  1678. PRole,
  1679. Scenario,
  1680. SDate,
  1681. DESCRIBE,
  1682. created_by ,
  1683. created_time
  1684. ) SELECT
  1685. reflect("java.util.UUID", "randomUUID"),
  1686. m.contnos,
  1687. max(i.customerno) customerno,
  1688. max(m.econtactsName) econtactsName,
  1689. '投保人' AS tbr,
  1690. '咨询' AS zx,
  1691. m.starttime,
  1692. max(m.reasonsecondname) reasonsecondname,
  1693. 'admin',
  1694. sysdate()
  1695. from dsj.cc_record_main m
  1696. LEFT JOIN dsj.policy_information i ON m.contnos = i.contno
  1697. WHERE m.contnos IS NOT NULL GROUP BY m.contnos,m.starttime;
  1698. dbms_output.put_line('partytimeline_zx函数跑批完成!');
  1699. EXCEPTION
  1700. WHEN HIVE_EXCEPTION THEN
  1701. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1702. WHEN Others THEN
  1703. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1704. END;
  1705. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics() IS
  1706. DECLARE
  1707. BEGIN
  1708. DELETE FROM shanglifeecif.riskcode_statistics;
  1709. insert into shanglifeecif.riskcode_statistics (
  1710. id,
  1711. kindName,
  1712. khnum,
  1713. tatolprem
  1714. ) --险种大类统计
  1715. SELECT
  1716. row_number()over(),
  1717. temp.kindName,
  1718. temp.khnum,
  1719. temp.tatolprem
  1720. FROM (
  1721. SELECT
  1722. crt.riskcategoriesname AS kindName,
  1723. count(DISTINCT scustid) AS khnum,
  1724. sum(risk) AS tatolprem
  1725. FROM shanglifeecif.customer_risk_temp crt
  1726. WHERE crt.riskcategoriesname IS NOT null
  1727. GROUP BY crt.riskcategoriesname
  1728. ) temp;
  1729. dbms_output.put_line('riskcode_statistics函数跑批完成!');
  1730. EXCEPTION
  1731. WHEN HIVE_EXCEPTION THEN
  1732. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1733. WHEN Others THEN
  1734. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1735. END ;
  1736. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics_channel() IS
  1737. DECLARE
  1738. BEGIN
  1739. DELETE FROM shanglifeecif.riskcode_statistics_channel;
  1740. insert into shanglifeecif.riskcode_statistics_channel (
  1741. id,
  1742. kindName,
  1743. khnum,
  1744. tatolprem,
  1745. salecom,
  1746. salecomname
  1747. ) --险种大类统计
  1748. SELECT
  1749. row_number()over(),
  1750. temp.kindName,
  1751. temp.khnum,
  1752. temp.tatolprem,
  1753. temp.salecom,
  1754. temp.salecomname
  1755. FROM (
  1756. SELECT
  1757. crt.riskcategoriesname AS kindName,
  1758. count(DISTINCT scustid) AS khnum,
  1759. sum(risk) AS tatolprem,
  1760. crt.salecom AS salecom,
  1761. crt.salecomname AS salecomname
  1762. FROM shanglifeecif.customer_risk_temp crt
  1763. WHERE crt.riskcategoriesname IS NOT null
  1764. and crt.salecom is not null
  1765. GROUP BY crt.riskcategoriesname,crt.salecom,crt.salecomname
  1766. ) temp;
  1767. dbms_output.put_line('riskcode_statistics_channel函数跑批完成!');
  1768. EXCEPTION
  1769. WHEN HIVE_EXCEPTION THEN
  1770. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1771. WHEN Others THEN
  1772. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1773. END ;
  1774. CREATE OR REPLACE PROCEDURE shanglifeecif.same_customer() -- 创建主存储过程
  1775. IS
  1776. DECLARE
  1777. scount int
  1778. BEGIN
  1779. DELETE FROM shanglifeecif.samecustomer;
  1780. INSERT INTO shanglifeecif.samecustomer(
  1781. sid,
  1782. scustid,
  1783. name,
  1784. gender,
  1785. birthday,
  1786. idcard,
  1787. Passport,
  1788. Dlicense,
  1789. OtherIdNumber,
  1790. sameType
  1791. )
  1792. SELECT
  1793. reflect("java.util.UUID", "randomUUID"),
  1794. sc1.scustid,
  1795. sc1.name,
  1796. sc1.gender,
  1797. sc1.birthday,
  1798. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1799. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1800. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1801. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1802. 0
  1803. FROM shanglifeecif.customertotaltemp sc1
  1804. WHERE sc1.mobile IS NOT NULL AND EXISTS (SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc1.scustid != sc2.scustid
  1805. AND sc1.name = sc2.name AND sc1.gender = sc2.gender AND sc1.idtype = sc2.idtype AND sc1.mobile = sc2.mobile);
  1806. --三要素疑似相同指姓名、性别、出生日期一致 1
  1807. INSERT INTO shanglifeecif.samecustomer(
  1808. sid,
  1809. scustid,
  1810. name,
  1811. gender,
  1812. birthday,
  1813. idcard,
  1814. Passport,
  1815. Dlicense,
  1816. OtherIdNumber,
  1817. sameType
  1818. )
  1819. SELECT
  1820. reflect("java.util.UUID", "randomUUID"),
  1821. sc1.scustid,
  1822. sc1.name,
  1823. sc1.gender,
  1824. sc1.birthday,
  1825. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1826. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1827. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1828. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1829. 1
  1830. FROM shanglifeecif.customertotaltemp sc1
  1831. 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 )
  1832. ORDER BY sc1.name,sc1.gender,sc1.birthday
  1833. --两要素疑似相同指姓名、证件号码一致 2
  1834. INSERT INTO shanglifeecif.samecustomer(
  1835. sid,
  1836. scustid,
  1837. name,
  1838. gender,
  1839. birthday,
  1840. idcard,
  1841. Passport,
  1842. Dlicense,
  1843. OtherIdNumber,
  1844. sameType
  1845. )
  1846. SELECT
  1847. reflect("java.util.UUID", "randomUUID"),
  1848. sc1.scustid,
  1849. sc1.name,
  1850. sc1.gender,
  1851. sc1.birthday,
  1852. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  1853. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  1854. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  1855. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  1856. 2
  1857. FROM shanglifeecif.customertotaltemp sc1
  1858. 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);
  1859. dbms_output.put_line('same_customer函数跑批完成!');
  1860. END;
  1861. CREATE OR REPLACE PROCEDURE shanglifeecif.surrender_protection_temp() IS
  1862. DECLARE
  1863. BEGIN
  1864. DELETE FROM shanglifeecif.surrenderprotectiontemp;
  1865. insert into shanglifeecif.surrenderprotectiontemp(
  1866. tbid,
  1867. scustid,
  1868. tbday
  1869. )SELECT row_number()over(),p.customerno,max(DATEDIFF(t.edorappdate,p.cvalidate)) AS tbday FROM dsj.lpedoritem t,dsj.policy_information p
  1870. WHERE t.contno = p.contno and t.edortype='CT' AND edorstate = 0 GROUP BY p.customerno;
  1871. dbms_output.put_line('surrender_protection_temp函数跑批完成!');
  1872. EXCEPTION
  1873. WHEN HIVE_EXCEPTION THEN
  1874. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1875. WHEN Others THEN
  1876. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1877. END ;
  1878. CREATE OR REPLACE PROCEDURE shanglifeecif.tb_customerinfo() IS
  1879. DECLARE
  1880. BEGIN
  1881. DELETE FROM shanglifeecif.tbcustomerinfo;
  1882. insert into shanglifeecif.tbcustomerinfo(
  1883. tbid,
  1884. scustid,
  1885. contno,
  1886. sdate,
  1887. edate,
  1888. salecom,
  1889. salecomname
  1890. )SELECT row_number()over(),p.customerno,p.contno,p.cvalidate,t.edorappdate ,p.salecom,p.salecomname FROM dsj.lpedoritem t,dsj.policy_information p
  1891. WHERE t.contno = p.contno and t.edortype='CT' AND t.edorstate = 0 ;
  1892. dbms_output.put_line('tb_customerinfo函数跑批完成!');
  1893. EXCEPTION
  1894. WHEN HIVE_EXCEPTION THEN
  1895. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1896. WHEN Others THEN
  1897. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1898. END ;
  1899. CREATE OR REPLACE PROCEDURE shanglifeecif.up_other_customerinfo() -- 创建存储过程
  1900. IS
  1901. BEGIN
  1902. --更新客户类型投保人
  1903. UPDATE shanglifeecif.individual i SET i.custtype = '投保人' WHERE
  1904. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p);
  1905. --更新客户类型投保人、被保人
  1906. UPDATE shanglifeecif.individual i SET i.custtype = '被保人' WHERE
  1907. i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  1908. --更新客户类型投保人、被保人
  1909. UPDATE shanglifeecif.individual i SET i.custtype = '投保人、被保人' WHERE
  1910. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p)
  1911. AND i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  1912. --更新业绩归属
  1913. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  1914. SELECT trim(t.SALECOM) FROM (
  1915. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.customerno,p.SALECOM FROM dsj.policy_information p
  1916. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1917. );
  1918. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  1919. SELECT trim(t.SALECOM) FROM (
  1920. SELECT row_number()OVER(PARTITION BY p.insuredno ORDER BY p.polapplydate asc) rd,p.insuredno,p.SALECOM FROM dsj.policy_information p
  1921. ) t WHERE t.rd = 1 AND si1.scustid = t.insuredno
  1922. );
  1923. --更新职业,民族等信息
  1924. UPDATE shanglifeecif.Individual si1 SET (si1.Occupation,si1.Ethnic,si1.education) = (
  1925. SELECT trim(t.occupationname),trim(t.NATIONALITYNAME),trim(t.degree) FROM (
  1926. 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
  1927. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1928. );
  1929. --更新官微积分
  1930. UPDATE shanglifeecif.individual si SET si.officialCalculus = (
  1931. 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
  1932. );
  1933. dbms_output.put_line('up_other_customerinfo函数跑批完成!');
  1934. EXCEPTION
  1935. WHEN HIVE_EXCEPTION THEN
  1936. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1937. WHEN Others THEN
  1938. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1939. END;
  1940. CREATE OR REPLACE PROCEDURE shanglifeecif.up_t_customers_class_1() -- 创建存储过程
  1941. IS
  1942. BEGIN
  1943. UPDATE shanglifeecif.individual a SET (
  1944. CustClass ,-- 客户等级
  1945. ConValue ,-- 贡献度分
  1946. Awarded3 ,-- 家庭加分2
  1947. Awarded2 ,-- 续期加分
  1948. Awarded1 ,-- 保单加分
  1949. SOValue ,-- 总分值
  1950. EndDate, -- 客户等级失效日期
  1951. Height, --身高
  1952. Weight, --体重
  1953. BMI,
  1954. PIncome, --个人年收入
  1955. FIncome, --家庭年收入
  1956. IncomeSource, --收入来源
  1957. SIStatus, --社保情况
  1958. --Ethnic, --民族情况
  1959. Nation, --国籍
  1960. MaritalStat, --婚姻
  1961. Employer,--工作单位
  1962. --Education,--学历
  1963. Dday, --死亡日期
  1964. regtype, --户籍类型
  1965. ZIPCODE,--邮编
  1966. HPhone,--电话
  1967. PMPhone,--手机
  1968. email, -- 邮箱
  1969. RAL, --联系地址
  1970. sobirth --省份
  1971. ) = (
  1972. select
  1973. b.CLASS_VALUE,--客户等级
  1974. b.CONTRIBUTION_VALUE,--贡献度分
  1975. b.AWARDED3, --家庭加分
  1976. b.AWARDED2, --续期加分
  1977. b.AWARDED1, --保单加分
  1978. b.TOTAL_VALUE, --总分值
  1979. trim(b.END_DATE) as END_DATE, --失效日期
  1980. b.STATURE, --身高
  1981. b.AVOIRDUPOIS,--体重
  1982. b.BMI, --根据身高体重计算
  1983. b.YEARINCOME, --个人年收入
  1984. b.FAMILYYEARSALARY, --家庭年收入
  1985. trim(b.INCOMESOURCE) as INCOMESOURCE, --收入来源
  1986. trim(b.SOCIALINSUFLAG) as SOCIALINSUFLAG, --社保情况
  1987. --trim(b.NATIONALITY) as NATIONALITY, --民族情况
  1988. trim(b.NATIVEPLACE) as NATIVEPLACE, --国籍
  1989. trim(b.MARRIAGE) as MARRIAGE,--婚姻
  1990. trim(b.GRPNAME) as GRPNAME,--工作单位名称
  1991. --trim(b.DEGREE) as DEGREE,--学历
  1992. trim(b.DEATHDATE) as DEATHDATE,--死亡日期
  1993. trim(b.DENTYPE) as DENTYPE,--户籍类型
  1994. trim(b.ZIPCODE) as ZIPCODE,--邮编
  1995. trim(b.PHONE) as PHONE,--电话
  1996. trim(b.MOBILE) as MOBILE,--手机
  1997. trim(b.EMAIL) as EMAIL,--邮箱
  1998. regexp_replace(trim(b.POSTALADDRESS),'[0-90-9]','*') as POSTALADDRESS, --联系地址
  1999. regexp_extract(b.POSTALADDRESS,'(.*?)省|(.*?)市',0) -- 省份
  2000. from dsj.t_customer_class b
  2001. where b.CUSTOMER_ID = a.scustid
  2002. ) WHERE 1=1 ;
  2003. dbms_output.put_line('up_t_customers_class_1函数跑批完成!');
  2004. EXCEPTION
  2005. WHEN HIVE_EXCEPTION THEN
  2006. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2007. WHEN Others THEN
  2008. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2009. END;
  2010. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuranceclaimthread_add_salecom()
  2011. IS
  2012. BEGIN
  2013. UPDATE shanglifeecif.insuranceclaimthread insd
  2014. SET (
  2015. insd.SALECOM,
  2016. insd.salecomname
  2017. )
  2018. =(SELECT t.salecom , t.salecomname FROM
  2019. (
  2020. SELECT
  2021. contno, salecom , salecomname
  2022. FROM dsj.policy_information t
  2023. GROUP BY contno , salecom , salecomname
  2024. ) t WHERE t.contno = insd.policyno
  2025. -- AND t.contno in('2019012400157198','2019071600119318')
  2026. )
  2027. dbms_output.put_line('update_insuranceclaimthread add saleCome 函数跑批完成!');
  2028. EXCEPTION
  2029. WHEN HIVE_EXCEPTION THEN
  2030. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2031. WHEN Others THEN
  2032. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2033. END;
  2034. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuredinfo()
  2035. IS
  2036. BEGIN
  2037. --更新被保人信息
  2038. UPDATE shanglifeecif.individual a SET (
  2039. ZIPCODE,--邮编
  2040. HPhone,--电话
  2041. PMPhone,--手机
  2042. email, -- 邮箱
  2043. RAL, --联系地址
  2044. sobirth --省份
  2045. ) = (
  2046. SELECT
  2047. t.zipcode,
  2048. t.phone,
  2049. t.mobile,
  2050. t.email,
  2051. regexp_replace(trim(t.address),'[0-9]','*') address,
  2052. regexp_extract(t.address,'(.*?)省|(.*?)市',0) province
  2053. FROM (
  2054. SELECT
  2055. row_number()OVER(PARTITION BY ls.customerno ORDER BY ls.modifydate desc) rn,
  2056. ls.customerno,--客户号
  2057. CASE
  2058. WHEN ls.postaladdress IS NULL
  2059. THEN
  2060. CASE WHEN ls.homeaddress IS NULL THEN ls.companyaddress ELSE ls.homeaddress END
  2061. ELSE ls.postaladdress
  2062. END AS address,
  2063. ls.phone,
  2064. ls.zipcode,--邮编
  2065. CASE WHEN ls.email IS NULL THEN ls.email2 ELSE ls.email END AS email,
  2066. CASE WHEN ls.mobile IS NULL THEN ls.mobile2 ELSE ls.mobile END AS mobile
  2067. FROM dsj.lcaddress ls
  2068. ) t where t.rn = 1 AND t.customerno = a.scustid
  2069. ) WHERE a.custtype = '被保人';
  2070. UPDATE shanglifeecif.individual a SET (
  2071. Height, --身高
  2072. Weight, --体重
  2073. BMI,
  2074. PIncome, --个人年收入
  2075. Ethnic, --民族情况
  2076. Nation, --国籍
  2077. MaritalStat, --婚姻
  2078. Education,--学历
  2079. SIStatus,--社保
  2080. IncomeSource,--收入来源
  2081. Occupation,--职业
  2082. regtype --户籍类型
  2083. ) = (
  2084. SELECT
  2085. t.stature,--身高
  2086. t.avoirdupois,--体重
  2087. t.bmi,
  2088. t.yearincome,
  2089. t.nationality,--民族
  2090. t.nativeplace,--国籍
  2091. t.marriage, --婚姻状况
  2092. t.degree, --学历
  2093. t.socialinsuflag,--社保
  2094. t.incomesource,--收入来源
  2095. t.occupationcode,--职业
  2096. t.dentype
  2097. FROM (
  2098. SELECT
  2099. row_number()OVER(PARTITION BY ld.insuredno ORDER BY ld.modifydate desc) rn,
  2100. ld.insuredno,--被保人客户号
  2101. ld.appntno,--投保人客户号
  2102. ld.name,--被保人名称
  2103. ld.sex,--被保人性别
  2104. ld.birthday,--被保人出生日期
  2105. ld.idtype,--证件类型
  2106. ld.idno,--证件号码
  2107. ld.marriage,--婚姻状况
  2108. ld.occupationcode,--职业
  2109. ld.nativeplace,--国籍
  2110. ld.nationality,--民族
  2111. ld.stature,--身高
  2112. ld.avoirdupois,--体重
  2113. round((ld.avoirdupois/POWER((ld.stature/100),2)),2) bmi,
  2114. ld.degree,--学历
  2115. ld.dentype,--居民类型
  2116. ld.socialinsuflag,--社保情况
  2117. ld.incomesource,--收入来源
  2118. ld.yearincome --年收入
  2119. FROM dsj.lcinsured2 ld
  2120. ) t WHERE t.rn = 1 AND t.insuredno = a.scustid
  2121. ) WHERE a.custtype = '被保人';
  2122. dbms_output.put_line('update_insuredinfo函数跑批完成!');
  2123. EXCEPTION
  2124. WHEN HIVE_EXCEPTION THEN
  2125. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2126. WHEN Others THEN
  2127. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2128. END;
  2129. CREATE OR REPLACE PROCEDURE shanglifeecif.update_partytimeline_add_salecom()
  2130. IS
  2131. BEGIN
  2132. UPDATE shanglifeecif.partytimeline pt SET (pt.salecom,pt.salecomname) =
  2133. (
  2134. SELECT t.salecom, t.salecomname FROM
  2135. (
  2136. SELECT
  2137. contno, salecom, salecomname
  2138. FROM dsj.policy_information t
  2139. GROUP BY contno, salecom, salecomname
  2140. ) t WHERE t.contno = pt.policyno
  2141. )
  2142. dbms_output.put_line('update_partytimeline_add_salecom 函数跑批完成!');
  2143. EXCEPTION
  2144. WHEN HIVE_EXCEPTION THEN
  2145. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2146. WHEN Others THEN
  2147. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2148. END;
  2149. CREATE OR REPLACE PROCEDURE shanglifeecif.update_risk_categories() -- 创建主存储过程
  2150. IS
  2151. BEGIN
  2152. --更新险种大类
  2153. UPDATE shanglifeecif.insurancearrangement a SET (
  2154. risk_categories_name
  2155. ) = (
  2156. select
  2157. kindtype
  2158. from dsj.riskkind b WHERE a.productid = b.riskcode
  2159. ) WHERE 1=1;
  2160. dbms_output.put_line('update_risk_categories函数跑批完成!');
  2161. EXCEPTION
  2162. WHEN HIVE_EXCEPTION THEN
  2163. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2164. WHEN Others THEN
  2165. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2166. END;
  2167. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  2168. DECLARE
  2169. BEGIN
  2170. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  2171. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  2172. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  2173. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  2174. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  2175. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  2176. --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 '老年'" 儿童、少年、青年、中年、老年
  2177. --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);
  2178. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  2179. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  2180. --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离异
  2181. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  2182. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  2183. --case si1.maritalStat
  2184. --when 1 then '未婚'
  2185. --when 2 then '已婚'
  2186. --when 3 then '丧偶'
  2187. --when 4 then '离异'
  2188. --else NULL END
  2189. --) WHERE 1 = 1;
  2190. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  2191. --else null" 无子女、1孩、2孩及以上
  2192. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  2193. SELECT nvl(t.cnum,0) FROM (
  2194. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  2195. WHERE si.rstype = '子女' GROUP BY si.indid1
  2196. ) t WHERE t.indid1 = si1.scustid
  2197. ) ;
  2198. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  2199. case
  2200. when si1.COChild=0 then '无子女'
  2201. when si1.COChild=1 then '1孩'
  2202. when si1.COChild>=2 then '2孩及以上'
  2203. else null END
  2204. ) WHERE si1.cochild is not null;
  2205. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  2206. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  2207. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  2208. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  2209. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  2210. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  2211. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  2212. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  2213. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  2214. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  2215. --根据数据判断单位应该是万元,这里都除以10000做判断
  2216. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  2217. CASE
  2218. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  2219. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  2220. WHEN si1.pincome > 100 THEN '富人'
  2221. else null END
  2222. ) where 1 = 1;
  2223. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  2224. --else null" 无车,1辆车,2辆车及以上
  2225. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  2226. CASE
  2227. WHEN si1.COVehicle ==0 THEN '无车'
  2228. WHEN si1.COVehicle == 1 THEN '1辆车'
  2229. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  2230. ELSE NULL END
  2231. ) where 1 = 1;
  2232. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  2233. --else null" 无房,1套房,2套房及以上
  2234. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  2235. CASE
  2236. WHEN si1.CORP ==0 THEN '无房'
  2237. WHEN si1.CORP == 1 THEN '1套房'
  2238. WHEN si1.CORP > 1 THEN '2套房以上'
  2239. else null END
  2240. ) where 1 = 1;
  2241. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  2242. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  2243. (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 = '人寿保险'));
  2244. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  2245. --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件'
  2246. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  2247. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  2248. --第一步 更新 Individual.NOVPolicy 有效记录数
  2249. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  2250. --SELECT temp.customerno,count(*) AS cnum FROM (
  2251. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  2252. --) temp GROUP BY temp.customerno
  2253. --) t WHERE t.customerno = si1.scustid);
  2254. --第二步 更新 Individual.NOIVPolicy 无效记录数
  2255. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  2256. --SELECT temp.customerno,count(*) AS cnum FROM (
  2257. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  2258. --) temp GROUP BY temp.customerno
  2259. --) t WHERE t.customerno = si1.scustid);
  2260. --第三步
  2261. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  2262. --CASE
  2263. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  2264. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  2265. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  2266. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  2267. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  2268. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  2269. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  2270. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  2271. --END ) where 1 = 1;
  2272. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  2273. --CASE
  2274. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  2275. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  2276. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  2277. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  2278. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  2279. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  2280. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  2281. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  2282. --END
  2283. --) where 1 = 1;
  2284. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  2285. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  2286. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2287. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  2288. )
  2289. );
  2290. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  2291. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  2292. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  2293. SELECT
  2294. CASE
  2295. WHEN temp.cnt >0 THEN
  2296. '有极短意外险'
  2297. END
  2298. FROM
  2299. (
  2300. SELECT
  2301. count(1) cnt,
  2302. policy.customerno
  2303. FROM
  2304. policy_information policy
  2305. where
  2306. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  2307. and
  2308. policy.riskperiod='短期险'
  2309. and
  2310. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2311. GROUP BY
  2312. policy.customerno
  2313. ) temp
  2314. WHERE temp.customerno = si1.scustid
  2315. );*/
  2316. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  2317. SELECT
  2318. CASE
  2319. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  2320. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  2321. END
  2322. FROM (
  2323. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2324. SELECT
  2325. count(1) cnt,
  2326. po.customerno
  2327. FROM
  2328. dsj.policy_information po
  2329. where
  2330. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2331. and
  2332. po.riskperiod='短期险'
  2333. and
  2334. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2335. GROUP BY
  2336. po.customerno
  2337. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  2338. ) temp where temp.customerno = si1.scustid
  2339. );
  2340. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  2341. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  2342. 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 '%一次交清%')
  2343. );
  2344. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  2345. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  2346. SELECT
  2347. CASE
  2348. WHEN tt.bnum = 0 THEN '本人未投保'
  2349. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  2350. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  2351. END
  2352. FROM (
  2353. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2354. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' 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. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  2359. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  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 count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  2369. GROUP BY p.customerno
  2370. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2371. ) tt WHERE tt.customerno = si1.scustid
  2372. );
  2373. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  2374. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  2375. SELECT
  2376. CASE
  2377. WHEN tt.bnum = 0 THEN '子女未投保'
  2378. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  2379. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  2380. END
  2381. FROM (
  2382. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2383. 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
  2384. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2385. ) tt WHERE tt.customerno = si1.scustid
  2386. );
  2387. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  2388. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  2389. SELECT
  2390. CASE
  2391. WHEN tt.bnum = 0 THEN '配偶未投保'
  2392. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  2393. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  2394. END
  2395. FROM (
  2396. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2397. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno
  2398. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  2399. ) tt WHERE tt.customerno = si1.scustid
  2400. );
  2401. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  2402. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  2403. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  2404. SELECT
  2405. CASE
  2406. WHEN temp.cnt >0 THEN
  2407. '有1年期短险保单'
  2408. END
  2409. FROM
  2410. (
  2411. SELECT
  2412. count(1) cnt,
  2413. policy.customerno
  2414. FROM
  2415. policy_information policy
  2416. where
  2417. policy.SECURITY in('1年','6月','180天')
  2418. and
  2419. policy.riskperiod='短期险'
  2420. and
  2421. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2422. GROUP BY
  2423. policy.customerno
  2424. ) temp
  2425. WHERE
  2426. temp.customerno = si1.scustid
  2427. );*/
  2428. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  2429. SELECT
  2430. CASE
  2431. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  2432. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  2433. END
  2434. FROM (
  2435. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2436. SELECT
  2437. count(1) cnt,
  2438. po.customerno
  2439. FROM
  2440. dsj.policy_information po
  2441. where
  2442. po.SECURITY in('1年','6月','180天')
  2443. and
  2444. po.riskperiod='短期险'
  2445. and
  2446. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2447. GROUP BY
  2448. po.customerno
  2449. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  2450. ) temp where temp.customerno = si1.scustid
  2451. );
  2452. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  2453. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  2454. 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')
  2455. );
  2456. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  2457. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  2458. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  2459. );
  2460. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  2461. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  2462. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2463. select otherno from dsj.ljspay where othernotype = '2'
  2464. )
  2465. );
  2466. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  2467. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  2468. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  2469. );
  2470. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  2471. --第一步
  2472. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  2473. SELECT fadate FROM (
  2474. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  2475. ) t WHERE t.customerno = si1.scustid
  2476. );
  2477. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  2478. SELECT fadate FROM (
  2479. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  2480. ) t WHERE t.insuredno = si1.scustid
  2481. );
  2482. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  2483. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  2484. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  2485. SELECT fadate FROM (
  2486. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  2487. ) t WHERE t.customerno = si1.scustid
  2488. );
  2489. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  2490. SELECT fadate FROM (
  2491. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  2492. ) t WHERE t.insuredno = si1.scustid
  2493. );
  2494. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  2495. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  2496. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  2497. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  2498. WHERE p.salecomname IS NOT null
  2499. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2500. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  2501. --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
  2502. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2503. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  2504. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  2505. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  2506. -- 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
  2507. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2508. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  2509. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  2510. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  2511. 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
  2512. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2513. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  2514. --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
  2515. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2516. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  2517. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  2518. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  2519. -- 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
  2520. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2521. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  2522. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  2523. /*
  2524. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  2525. (SELECT
  2526. (CASE temp.appflag
  2527. WHEN '0' THEN '最近保单状态未承保'
  2528. WHEN '1' THEN '最近保单状态承保'
  2529. WHEN '2' THEN '最近保单状态新增附加险'
  2530. WHEN '4' THEN '最近保单状态终止'
  2531. WHEN '9' THEN '最近保单状态续保'
  2532. WHEN 'B' THEN '最近保单状态未对账'
  2533. WHEN 'F' THEN '最近保单状态对账失败'
  2534. END) a
  2535. FROM (
  2536. 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
  2537. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  2538. */
  2539. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  2540. SELECT '最近保单状态'||trim(t.appflag) FROM (
  2541. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  2542. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2543. );
  2544. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  2545. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  2546. SELECT '客户最近一次办理'||t.edorname FROM (
  2547. SELECT
  2548. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  2549. l.edortype,
  2550. l.contno,
  2551. p.customerno,
  2552. l.edorappdate,
  2553. l.edorstate,
  2554. lm.edorcode,
  2555. lm.edorname
  2556. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  2557. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  2558. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2559. ) WHERE 1 = 1;
  2560. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  2561. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  2562. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2563. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  2564. )
  2565. );
  2566. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  2567. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  2568. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  2569. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  2570. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2571. );
  2572. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  2573. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  2574. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  2575. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  2576. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2577. );
  2578. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  2579. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  2580. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  2581. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  2582. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  2583. );
  2584. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  2585. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  2586. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  2587. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2588. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  2589. )
  2590. );
  2591. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  2592. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  2593. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  2594. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2595. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  2596. ) and p.appflag = '有效'
  2597. );
  2598. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  2599. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  2600. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  2601. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  2602. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2603. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  2604. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  2605. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  2606. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  2607. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  2608. GROUP BY pi.customerno
  2609. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  2610. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  2611. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  2612. SELECT temp.customerno FROM (
  2613. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2614. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  2615. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2616. GROUP BY pi.customerno
  2617. ) temp WHERE temp.tnum = temp.pnum
  2618. );
  2619. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  2620. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  2621. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  2622. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  2623. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  2624. WHERE p.appflag = '有效' GROUP BY p.customerno
  2625. ) t WHERE t.pnum > 0);
  2626. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  2627. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  2628. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  2629. CASE si1.CustClass
  2630. WHEN 1 THEN '钻石客户'
  2631. WHEN 2 THEN '白金客户'
  2632. WHEN 3 THEN '黄金客户'
  2633. --WHEN 4 THEN '普通级别'
  2634. --ELSE '无级别'
  2635. ELSE ''
  2636. END
  2637. ) where 1 = 1;
  2638. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  2639. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  2640. SELECT '最近'||t.scenario FROM (
  2641. SELECT
  2642. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  2643. pl.partyid,
  2644. pl.scenario
  2645. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  2646. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  2647. );
  2648. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  2649. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  2650. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  2651. SELECT
  2652. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  2653. pl.partyid,
  2654. pl.scenario
  2655. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  2656. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  2657. );
  2658. --77 是否关注官微 Label73 关注官微 无 0
  2659. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  2660. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  2661. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  2662. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  2663. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  2664. --78 是否注册官微 Label74 注册官微 无 0
  2665. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  2666. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2667. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2668. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2669. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  2670. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  2671. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2672. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2673. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  2674. );
  2675. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  2676. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2677. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2678. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  2679. );
  2680. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  2681. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  2682. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  2683. --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;
  2684. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  2685. SELECT scustid FROM (
  2686. SELECT * FROM (
  2687. 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
  2688. , day(to_date(birthday)) userday from shanglifeecif.Individual
  2689. )
  2690. WHERE
  2691. (nowmonth != nextmonth AND
  2692. (
  2693. (nowmonth== usermonth AND userday> nowday )
  2694. or (nextmonth == usermonth AND userday <= nextday )
  2695. )
  2696. )
  2697. OR (nowmonth == nextmonth AND nowmonth = usermonth AND userday > nowday AND userday <=nextday )
  2698. )
  2699. );
  2700. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' 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. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  2706. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2707. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2708. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  2709. );
  2710. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  2711. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2712. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2713. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  2714. );
  2715. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' WHERE si1.scustid IN (
  2716. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2717. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2718. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '女儿'
  2719. );
  2720. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  2721. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  2722. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2723. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  2724. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  2725. );
  2726. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2727. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  2728. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2729. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  2730. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2731. );
  2732. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2733. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  2734. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2735. 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
  2736. );
  2737. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2738. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  2739. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2740. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2741. );
  2742. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2743. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2744. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2745. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  2746. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2747. GROUP BY pi.customerno
  2748. ) temp WHERE temp.tnum = temp.pnum);
  2749. --失效原因
  2750. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  2751. SELECT '有'||t.terminatestate||'保单' FROM (
  2752. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2753. WHERE p.appflag = '失效'
  2754. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2755. );
  2756. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  2757. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2758. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2759. --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
  2760. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2761. --GROUP BY pi.customerno
  2762. --) temp WHERE temp.tnum = temp.pnum);
  2763. --终止原因
  2764. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  2765. SELECT '有'||t.terminatestate||'保单' FROM (
  2766. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2767. WHERE p.appflag = '终止'
  2768. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2769. );
  2770. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  2771. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2772. --SELECT
  2773. --CASE
  2774. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  2775. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  2776. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  2777. --END
  2778. -- FROM (
  2779. -- 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 (
  2780. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  2781. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  2782. -- ) t LEFT JOIN (
  2783. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  2784. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  2785. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  2786. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  2787. --) WHERE 1 = 1;
  2788. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2789. -- SELECT
  2790. -- CASE
  2791. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  2792. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  2793. -- WHEN t.dnum>60 THEN '宽限期外交费'
  2794. -- END
  2795. -- FROM (
  2796. -- 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
  2797. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  2798. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  2799. --) WHERE 1 = 1;
  2800. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2801. SELECT
  2802. CASE
  2803. WHEN t.dnum=0 THEN '上一年如期缴费'
  2804. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  2805. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  2806. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  2807. END
  2808. FROM (
  2809. SELECT
  2810. 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
  2811. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  2812. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  2813. ) WHERE 1 = 1;
  2814. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  2815. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  2816. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2817. SELECT contnos from dsj.cc_record_main
  2818. )
  2819. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  2820. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  2821. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  2822. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2823. SELECT contnos from dsj.cc_record_main
  2824. )
  2825. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  2826. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  2827. 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;
  2828. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  2829. --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
  2830. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  2831. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  2832. SELECT '长通话' FROM (
  2833. SELECT
  2834. t.contnos,
  2835. row_number()OVER(PARTITION BY p.customerno) rn,
  2836. p.customerno
  2837. FROM (
  2838. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  2839. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  2840. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  2841. GROUP BY m.contnos
  2842. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  2843. WHERE t.avgcalltime>600
  2844. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  2845. );
  2846. --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%'" 每次来电均下转办单的
  2847. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  2848. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2849. SELECT temp.policyno FROM (
  2850. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2851. 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
  2852. UNION
  2853. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  2854. )t GROUP BY t.policyno
  2855. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  2856. )
  2857. );
  2858. --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%'" 咨询转办单项目为投诉
  2859. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  2860. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2861. SELECT temp.policyno FROM (
  2862. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2863. 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
  2864. UNION
  2865. 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
  2866. )t GROUP BY t.policyno
  2867. ) temp WHERE temp.mnum = temp.fnum
  2868. )
  2869. );
  2870. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  2871. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  2872. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  2873. --(SELECT temp.productno FROM (
  2874. --SELECT t.productno,t.sinserttime,
  2875. --(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
  2876. --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
  2877. -- FROM
  2878. --(
  2879. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  2880. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  2881. --) t
  2882. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  2883. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  2884. SELECT t.customerno FROM (
  2885. SELECT
  2886. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2887. t1.customerno,
  2888. t1.contno,
  2889. ca.inserttime FROM (
  2890. SELECT
  2891. max(p.customerno) customerno,
  2892. p.contno
  2893. FROM dsj.policy_information p GROUP BY p.contno
  2894. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2895. ) t LEFT JOIN (
  2896. SELECT
  2897. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2898. t1.customerno,
  2899. t1.contno,
  2900. ca.inserttime FROM (
  2901. SELECT
  2902. max(p.customerno) customerno,
  2903. p.contno
  2904. FROM dsj.policy_information p GROUP BY p.contno
  2905. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2906. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  2907. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  2908. );
  2909. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  2910. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  2911. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  2912. SELECT
  2913. CASE
  2914. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  2915. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  2916. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  2917. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  2918. select group_concat((case c.complaintsSource
  2919. when '911' then '来电'
  2920. when '912' then '来访'
  2921. when '913' then '来函'
  2922. when '914' then '保监会转办'
  2923. when '919' then '保监局转办'
  2924. when '915' then '媒体转办'
  2925. when '916' then '同业公会'
  2926. when '917' then '其他转办'
  2927. when '918' then '呼出'
  2928. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  2929. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  2930. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  2931. ) tt WHERE tt.customerno = si1.scustid
  2932. );
  2933. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  2934. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  2935. --02个险渠道 期缴 大于20000以上
  2936. --03银保渠道 期缴 大于50000以上
  2937. --06健康险 期缴 大于 20000以上
  2938. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  2939. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  2940. p.appflag = '有效' AND p.payintv = '期缴' and
  2941. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  2942. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  2943. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  2944. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  2945. );
  2946. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  2947. 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) );
  2948. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  2949. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  2950. 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 = '立案')
  2951. );
  2952. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  2953. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  2954. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2955. 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'
  2956. )
  2957. );
  2958. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  2959. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  2960. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2961. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  2962. )
  2963. );
  2964. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  2965. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  2966. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2967. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  2968. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  2969. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  2970. )
  2971. );
  2972. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  2973. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  2974. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  2975. 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
  2976. );
  2977. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  2978. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  2979. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  2980. dbms_output.put_line('updateindividuallable函数跑批完成!');
  2981. EXCEPTION
  2982. WHEN HIVE_EXCEPTION THEN
  2983. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2984. WHEN Others THEN
  2985. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2986. END