存储过程.sql 168 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389
  1. CREATE OR REPLACE PROCEDURE shanglifeecif.age_sex_distribution() IS
  2. DECLARE
  3. BEGIN
  4. 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);
  5. DELETE FROM shanglifeecif.age_sex_distribution;
  6. insert into shanglifeecif.age_sex_distribution (
  7. id,
  8. labelName,
  9. gender,
  10. cusNum
  11. ) SELECT row_number()over(),t.labelName,t.gender,t.cusNum FROM (
  12. 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
  13. ) t;
  14. dbms_output.put_line('age_sex_distribution函数跑批完成!');
  15. EXCEPTION
  16. WHEN HIVE_EXCEPTION THEN
  17. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  18. WHEN Others THEN
  19. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  20. END ;
  21. CREATE OR REPLACE PROCEDURE shanglifeecif.bdnum_distribution() IS
  22. DECLARE
  23. BEGIN
  24. --第一步 更新 Individual.NOVPolicy 有效记录数
  25. UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  26. SELECT temp.customerno,count(*) AS cnum FROM (
  27. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  28. ) temp GROUP BY temp.customerno
  29. ) t WHERE t.customerno = si1.scustid);
  30. --第二步 更新 Individual.NOIVPolicy 无效记录数
  31. UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  32. SELECT temp.customerno,count(*) AS cnum FROM (
  33. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  34. ) temp GROUP BY temp.customerno
  35. ) t WHERE t.customerno = si1.scustid);
  36. --第三步
  37. UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  38. CASE
  39. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  40. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  41. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  42. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  43. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  44. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  45. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  46. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  47. END
  48. ) where si1.custtype like '%投保人%';
  49. /*
  50. * 如果某个区间没数据,则bdnum_distribution表中缺少该区间记录,而不是这个区间数是0
  51. DELETE FROM shanglifeecif.bdnum_distribution;
  52. insert into shanglifeecif.bdnum_distribution (
  53. id,
  54. labelName,
  55. bdnum
  56. ) SELECT row_number()over(),t.labelName,t.bdnum FROM (
  57. SELECT si.label25 labelName,count(1) bdnum FROM shanglifeecif.individual si WHERE si.label25 IS NOT null GROUP BY si.label25
  58. ) t;
  59. */
  60. DELETE FROM shanglifeecif.bdnum_distribution;
  61. -- insert时id要保持有序且不重复,重复的话ES会自动驱去重,有序是因为前端需要按照这个顺序排序展示 java程序可以根据id排序
  62. -- 注意:id是按照数字类型排序,所以id必须是整形数字,不能是字母、符号、小数点
  63. insert into shanglifeecif.bdnum_distribution (id, labelName, bdnum) VALUES
  64. ('1', '无保单', '0'),
  65. ('2', '1件', '0'),
  66. ('3', '2件', '0'),
  67. ('4', '3-5件', '0'),
  68. ('5', '6-10件', '0'),
  69. ('6', '11-20件', '0'),
  70. ('7', '21-50件', '0'),
  71. ('8', '50件以上', '0');
  72. UPDATE shanglifeecif.bdnum_distribution b SET bdnum = (
  73. SELECT t.bdnum FROM (
  74. SELECT
  75. CASE
  76. -- individual。label25对应标签信息,标签信息中要展示为'1件保单','2件保单'。而bdnum_distribution对应首页拥有保单件数分布,需要展示为1件,2件
  77. WHEN trim(si.label25) = '1件保单' THEN '1件'
  78. WHEN trim(si.label25) = '2件保单' THEN '2件'
  79. WHEN trim(si.label25) = '3-5件保单' THEN '3-5件'
  80. WHEN trim(si.label25) = '6-10件保单' THEN '6-10件'
  81. WHEN trim(si.label25) = '11-20件保单' THEN '11-20件'
  82. WHEN trim(si.label25) = '21-50件保单' THEN '21-50件'
  83. WHEN trim(si.label25) = '50件保单以上' THEN '50件以上'
  84. ELSE trim(si.label25)
  85. END AS labelName
  86. , count(1) bdnum
  87. FROM shanglifeecif.individual si
  88. WHERE si.label25 IS NOT NULL GROUP BY si.label25
  89. ) t
  90. WHERE b.labelName = t.labelName
  91. );
  92. dbms_output.put_line('bdnum_distribution函数跑批完成!');
  93. EXCEPTION
  94. WHEN HIVE_EXCEPTION THEN
  95. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  96. WHEN Others THEN
  97. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  98. END ;
  99. CREATE OR REPLACE PROCEDURE shanglifeecif.bdnum_distribution_channel() IS
  100. DECLARE
  101. BEGIN
  102. --第一步 更新 Individual.NOVPolicy 有效记录数
  103. UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  104. SELECT temp.customerno,count(*) AS cnum FROM (
  105. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  106. ) temp GROUP BY temp.customerno
  107. ) t WHERE t.customerno = si1.scustid);
  108. --第二步 更新 Individual.NOIVPolicy 无效记录数
  109. UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  110. SELECT temp.customerno,count(*) AS cnum FROM (
  111. SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  112. ) temp GROUP BY temp.customerno
  113. ) t WHERE t.customerno = si1.scustid);
  114. --第三步
  115. UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  116. CASE
  117. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  118. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  119. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  120. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  121. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  122. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  123. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  124. WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  125. END
  126. ) where si1.custtype like '%投保人%';
  127. DELETE FROM shanglifeecif.bdnum_distribution_channel;
  128. insert into shanglifeecif.bdnum_distribution_channel (
  129. id,
  130. labelName,
  131. bdnum
  132. ) SELECT row_number()over(),t.labelName,t.bdnum FROM (
  133. SELECT si.label25 labelName,count(1) bdnum FROM shanglifeecif.individual si WHERE si.label25 IS NOT null GROUP BY si.label25
  134. ) t;
  135. dbms_output.put_line('bdnum_distribution_channel函数跑批完成!');
  136. EXCEPTION
  137. WHEN HIVE_EXCEPTION THEN
  138. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  139. WHEN Others THEN
  140. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  141. END ;
  142. CREATE OR REPLACE PROCEDURE shanglifeecif.customer_risk_temp()
  143. IS
  144. DECLARE
  145. BEGIN
  146. DELETE FROM shanglifeecif.customer_risk_temp;
  147. INSERT INTO shanglifeecif.customer_risk_temp(
  148. id,
  149. scustid,
  150. name,
  151. gender,
  152. idcard,
  153. birthday,
  154. policyno,
  155. productname,
  156. riskcategoriesname,
  157. risk,
  158. salecom,
  159. salecomname
  160. )
  161. SELECT
  162. row_number()over(),
  163. si.scustid,
  164. si.name,
  165. CASE si.gender
  166. WHEN '0' THEN '男'
  167. WHEN '1' THEN '女'
  168. END AS gender,
  169. si.idcard,
  170. to_char(si.birthday,"yyyy-MM-dd") birthday,
  171. sit.policyno,
  172. sit.productname,
  173. sit.risk_categories_name,
  174. sit.Risk,
  175. sit.policybelong,
  176. sit.salecomname
  177. FROM shanglifeecif.individual si
  178. LEFT JOIN shanglifeecif.insurancearrangement sit ON si.scustid = sit.insuredscustid;
  179. dbms_output.put_line('customer_risk_temp函数跑批完成!');
  180. EXCEPTION
  181. WHEN HIVE_EXCEPTION THEN
  182. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  183. WHEN Others THEN
  184. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  185. END ;
  186. CREATE OR REPLACE PROCEDURE shanglifeecif.customertotaltemp() IS
  187. DECLARE
  188. BEGIN
  189. DELETE FROM shanglifeecif.customertotaltemp;
  190. insert into shanglifeecif.customertotaltemp(
  191. scustid,
  192. name,
  193. gender,
  194. birthday,
  195. idcard,
  196. idtype
  197. )
  198. SELECT
  199. scustid ,
  200. max(name) as name,
  201. max(gender) as gender ,
  202. to_char(max(birthday),"yyyy-MM-dd") birthday,
  203. max(idcard) as idcard,
  204. max(idtype) AS idtype
  205. FROM (
  206. SELECT
  207. trim(customerno) AS scustid,--投保人
  208. trim(name) AS name,
  209. trim(sex) AS gender,
  210. trim(birthday) AS birthday,
  211. trim(idtype) AS idtype ,
  212. trim(idno) AS idcard
  213. FROM
  214. dsj.policy_information
  215. WHERE customerno IS NOT NULL
  216. UNION
  217. SELECT
  218. trim(insuredno) AS scustid,--被保人
  219. trim(insuredname) AS name,
  220. trim(insuredsex) AS gender,
  221. trim(insuredbirthday) AS birthday,
  222. trim(insuredidtype) AS idtype ,
  223. trim(insuredidno) AS idcard
  224. FROM
  225. dsj.policy_information
  226. WHERE insuredno IS NOT NULL
  227. ) tmpTable GROUP BY scustid;
  228. UPDATE shanglifeecif.customertotaltemp sct SET sct.mobile = (SELECT trim(t.MOBILE) FROM dsj.t_customer_class t WHERE sct.scustid=t.customer_id);
  229. dbms_output.put_line('customertotaltemp函数跑批完成!');
  230. EXCEPTION
  231. WHEN HIVE_EXCEPTION THEN
  232. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  233. WHEN Others THEN
  234. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  235. END ;
  236. CREATE OR REPLACE PROCEDURE shanglifeecif.data_cleaning() -- 创建主存储过程
  237. IS
  238. DECLARE
  239. BEGIN
  240. --姓名 sametype:3
  241. INSERT INTO shanglifeecif.samecustomer(
  242. sid,
  243. scustid,
  244. name,
  245. gender,
  246. birthday,
  247. idcard,
  248. OtherIdNumber,
  249. sameType
  250. )
  251. SELECT
  252. reflect("java.util.UUID", "randomUUID"),
  253. t.customer_id,
  254. t.customer_name,
  255. t.gender,
  256. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  257. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  258. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  259. 3
  260. FROM dsj.t_customer_class t WHERE t.customer_name RLIKE '^.*[!$^|\=`]{1,}.*$' OR t.customer_name RLIKE '^.*[0-9]{1,}.*$' ;
  261. --性别 sametype:4
  262. INSERT INTO shanglifeecif.samecustomer(
  263. sid,
  264. scustid,
  265. name,
  266. gender,
  267. birthday,
  268. idcard,
  269. OtherIdNumber,
  270. sameType
  271. )
  272. SELECT
  273. reflect("java.util.UUID", "randomUUID"),
  274. t.customer_id,
  275. t.customer_name,
  276. t.gender,
  277. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  278. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  279. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  280. 4
  281. 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 );
  282. --证件号码 sametype:6
  283. INSERT INTO shanglifeecif.samecustomer(
  284. sid,
  285. scustid,
  286. name,
  287. gender,
  288. birthday,
  289. idcard,
  290. sameType
  291. )
  292. SELECT
  293. reflect("java.util.UUID", "randomUUID"),
  294. si.scustid,
  295. si.name,
  296. si.gender,
  297. si.birthday,
  298. si.idcard,
  299. 6
  300. FROM shanglifeecif.individual si WHERE length(si.idcard)<18 AND si.custtype LIKE '%投保人%' AND si.idcard IS NOT null;
  301. --出生日期 sametype:7
  302. INSERT INTO shanglifeecif.samecustomer(
  303. sid,
  304. scustid,
  305. name,
  306. gender,
  307. birthday,
  308. idcard,
  309. OtherIdNumber,
  310. sameType
  311. )
  312. SELECT
  313. reflect("java.util.UUID", "randomUUID"),
  314. t.customer_id,
  315. t.customer_name,
  316. t.gender,
  317. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  318. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  319. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  320. 7
  321. 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);
  322. --手机号 sametype:8
  323. INSERT INTO shanglifeecif.samecustomer(
  324. sid,
  325. scustid,
  326. name,
  327. gender,
  328. birthday,
  329. idcard,
  330. OtherIdNumber,
  331. mobile,
  332. sameType
  333. )
  334. SELECT
  335. reflect("java.util.UUID", "randomUUID"),
  336. t.customer_id,
  337. t.customer_name,
  338. t.gender,
  339. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  340. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  341. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  342. t.mobile,
  343. 8
  344. 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);
  345. --邮编 sametype:9
  346. INSERT INTO shanglifeecif.samecustomer(
  347. sid,
  348. scustid,
  349. name,
  350. gender,
  351. birthday,
  352. idcard,
  353. zipcode,
  354. sameType
  355. )
  356. SELECT
  357. reflect("java.util.UUID", "randomUUID"),
  358. si.scustid,
  359. si.name,
  360. si.gender,
  361. si.birthday,
  362. si.idcard,
  363. si.zipcode,
  364. 9
  365. FROM shanglifeecif.individual si WHERE (length(si.zipcode)>0 and length(si.zipcode)<6) OR length(si.zipcode)>6;
  366. --主被保险人性别异常数据 sametype:11
  367. INSERT INTO shanglifeecif.samecustomer(
  368. sid,
  369. scustid,
  370. name,
  371. gender,
  372. birthday,
  373. idcard,
  374. OtherIdNumber,
  375. sameType
  376. )
  377. SELECT
  378. reflect("java.util.UUID", "randomUUID"),
  379. t.customer_id,
  380. t.customer_name,
  381. t.gender,
  382. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  383. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  384. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  385. 11
  386. 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);
  387. --邮箱 sametype:14
  388. INSERT INTO shanglifeecif.samecustomer(
  389. sid,
  390. scustid,
  391. name,
  392. gender,
  393. birthday,
  394. idcard,
  395. OtherIdNumber,
  396. email,
  397. sameType
  398. )
  399. SELECT
  400. reflect("java.util.UUID", "randomUUID"),
  401. t.customer_id,
  402. t.customer_name,
  403. t.gender,
  404. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  405. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  406. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  407. t.email,
  408. 14
  409. 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);
  410. --主被保险人手机异常数据 sametype:16
  411. INSERT INTO shanglifeecif.samecustomer(
  412. sid,
  413. scustid,
  414. name,
  415. gender,
  416. birthday,
  417. idcard,
  418. OtherIdNumber,
  419. mobile,
  420. sameType
  421. )
  422. SELECT
  423. reflect("java.util.UUID", "randomUUID"),
  424. t.customer_id,
  425. t.customer_name,
  426. t.gender,
  427. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  428. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  429. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  430. t.mobile,
  431. 16
  432. 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);
  433. --主被保险人证件号码 sametype:17
  434. INSERT INTO shanglifeecif.samecustomer(
  435. sid,
  436. scustid,
  437. name,
  438. gender,
  439. birthday,
  440. idcard,
  441. sameType
  442. )
  443. SELECT
  444. reflect("java.util.UUID", "randomUUID"),
  445. si.scustid,
  446. si.name,
  447. si.gender,
  448. si.birthday,
  449. si.idcard,
  450. 17
  451. FROM shanglifeecif.individual si WHERE length(si.idcard)<18 AND si.custtype LIKE '%被保人%' AND si.idcard IS NOT null;
  452. --业务员没错 sametype:18
  453. INSERT INTO shanglifeecif.samecustomer(
  454. sid,
  455. scustid,
  456. name,
  457. gender,
  458. birthday,
  459. idcard,
  460. OtherIdNumber,
  461. agentname,
  462. sameType
  463. )
  464. SELECT
  465. reflect("java.util.UUID", "randomUUID"),
  466. t.customer_id,
  467. t.customer_name,
  468. t.gender,
  469. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  470. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  471. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  472. p.agentname,
  473. 18
  474. 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]$';
  475. --业绩归属 sametype:19
  476. INSERT INTO shanglifeecif.samecustomer(
  477. sid,
  478. scustid,
  479. name,
  480. gender,
  481. birthday,
  482. idcard,
  483. OtherIdNumber,
  484. salecomname,
  485. sameType
  486. )
  487. SELECT
  488. reflect("java.util.UUID", "randomUUID"),
  489. t.customer_id,
  490. t.customer_name,
  491. t.gender,
  492. to_char(t.birthdate,"yyyy-MM-dd") birthdate,
  493. CASE t.id_type WHEN '0' THEN t.id_no END AS idcard,
  494. CASE WHEN t.id_type <> '0' THEN t.id_no END AS otherIdnumber,
  495. p.salecomname,
  496. 19
  497. 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]$';
  498. dbms_output.put_line('data_cleaning函数跑批完成!');
  499. END;
  500. CREATE OR REPLACE PROCEDURE shanglifeecif.effective_customer() -- 创建主存储过程
  501. IS
  502. DECLARE
  503. scount int
  504. BEGIN
  505. DELETE FROM shanglifeecif.effectivecustomer WHERE fadateY = to_char(SYSDATE,"yyyy");
  506. INSERT INTO shanglifeecif.effectivecustomer(
  507. esid,
  508. fadateY,
  509. custclass,
  510. cnum
  511. )
  512. SELECT
  513. to_char(SYSDATE,"yyyy")||si.custclass,
  514. to_char(SYSDATE,"yyyy"),
  515. si.custclass,
  516. count(*) AS cnum
  517. FROM
  518. shanglifeecif.individual si WHERE si.Label91 IS NULL AND si.custclass IS NOT NULL AND si.custclass <> '0' GROUP BY si.custclass;
  519. dbms_output.put_line('effective_customer函数跑批完成!');
  520. EXCEPTION
  521. WHEN HIVE_EXCEPTION THEN
  522. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  523. WHEN Others THEN
  524. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  525. END;
  526. CREATE OR REPLACE PROCEDURE shanglifeecif.init_all_individual() -- 初始化所有客户信息
  527. IS
  528. BEGIN
  529. --查询出此次处理的数据并出表中
  530. insert into shanglifeecif.individual (
  531. indid,
  532. custid,
  533. scustid,
  534. name,
  535. gender,
  536. birthday,
  537. idcard,
  538. Passport,
  539. Dlicense,
  540. OtherIdNumber,
  541. created_time,
  542. created_by
  543. ) SELECT
  544. row_number()OVER(ORDER BY sc.scustid),
  545. 'CP'||lpad(row_number()over(ORDER BY sc.scustid),10,'0'),
  546. sc.scustid,
  547. sc.name,
  548. sc.gender,
  549. sc.birthday,
  550. CASE sc.idtype WHEN '0' THEN sc.idcard END AS idcard,
  551. CASE sc.idtype WHEN '1' THEN sc.idcard END AS passport,
  552. CASE sc.idtype WHEN '3' THEN sc.idcard END AS dlicense,
  553. CASE WHEN sc.idtype <> '0' AND sc.idtype <> '1' AND sc.idtype <> '3' THEN sc.idcard END AS otherIdnumber,
  554. sysdate,
  555. 'admin'
  556. FROM shanglifeecif.customertotaltemp sc ORDER BY sc.scustid;
  557. dbms_output.put_line('init_all_individual函数跑批完成!');
  558. EXCEPTION
  559. WHEN HIVE_EXCEPTION THEN
  560. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  561. WHEN Others THEN
  562. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  563. END;
  564. CREATE OR REPLACE PROCEDURE shanglifeecif.init_customerno_salecom_relation() IS
  565. DECLARE
  566. BEGIN
  567. delete from shanglifeecif.customerno_salecom_relation;
  568. -- 用户 渠道关系表
  569. insert into shanglifeecif.customerno_salecom_relation (
  570. csrid,
  571. indid,
  572. custid,
  573. scustid,
  574. name,
  575. birthday,
  576. nobirth,
  577. sobirth,
  578. cobirth,
  579. dday,
  580. gender,
  581. ethnic,
  582. nation,
  583. homeadress,
  584. regresidence,
  585. maritalstat,
  586. maritalstatdate,
  587. offspring,
  588. support,
  589. empstat,
  590. empstatdate,
  591. raid,
  592. ral,
  593. al,
  594. coadress,
  595. pmphone,
  596. mhone1,
  597. mhone2,
  598. sophone,
  599. height,
  600. weight,
  601. cillness,
  602. pillness,
  603. cdiseases,
  604. bmi,
  605. fmhistory,
  606. evadate,
  607. cohevaluation,
  608. hphone,
  609. occupationid,
  610. occupation,
  611. odate,
  612. employer,
  613. wphone,
  614. empdate,
  615. lemployer,
  616. idcard,
  617. passport,
  618. dlicense,
  619. education,
  620. university,
  621. edate,
  622. wechat,
  623. weibo,
  624. email,
  625. qq,
  626. tiktok,
  627. saccount1,
  628. sa1cat,
  629. saccount2,
  630. sa2cat,
  631. ctype,
  632. father,
  633. mother,
  634. mate,
  635. child1,
  636. child2,
  637. cochild,
  638. rpid,
  639. rpdescribe,
  640. corp,
  641. vid,
  642. vdescribe,
  643. covehicle,
  644. anniversary1,
  645. a1describe,
  646. anniversary2,
  647. a2describe,
  648. soanniversary,
  649. custtype,
  650. bankname,
  651. tobankcard,
  652. accname,
  653. bankaccno,
  654. cobaccount,
  655. sotlirisk,
  656. soairisk,
  657. sosiirisk,
  658. somcirisk,
  659. someirisk,
  660. soefirisk,
  661. sopirisk,
  662. sowmirisk,
  663. custclass,
  664. convalue,
  665. awarded3,
  666. awarded2,
  667. awarded1,
  668. sovalue,
  669. enddate,
  670. systemtag1,
  671. systemtag2,
  672. systemtag3,
  673. systemtag4,
  674. systemtag5,
  675. cocommunication,
  676. lcdate,
  677. lctype,
  678. lcmethod,
  679. cocomplaint,
  680. lcptdate,
  681. lcptreason,
  682. lcptlink,
  683. lcptresult,
  684. lcptduration,
  685. lcptperson,
  686. soppremium,
  687. lappdate,
  688. cndate,
  689. cnstatus,
  690. coclaim,
  691. soclaim,
  692. cocnotification,
  693. fadate,
  694. fachannel,
  695. faorg,
  696. lpno,
  697. lpstate,
  698. lpname,
  699. lpchannel,
  700. lporg,
  701. copolicy,
  702. lpostype,
  703. iaccno1,
  704. iaccname1,
  705. iaccno2,
  706. iaccname2,
  707. iaccno3,
  708. iaccname3,
  709. soiaccount1,
  710. soiaccount2,
  711. soiaccount3,
  712. coiaccount,
  713. homeid,
  714. branchcode,
  715. custstate,
  716. datasource,
  717. smoking,
  718. drinking,
  719. pregnancy,
  720. hobby1,
  721. hobby2,
  722. hobby3,
  723. pincome,
  724. fincome,
  725. regtype,
  726. incomesource,
  727. sistatus,
  728. novpolicy,
  729. noivpolicy,
  730. nostinsurance,
  731. nospinsurance,
  732. iself,
  733. iparent,
  734. ichildren,
  735. imate,
  736. policybelong,
  737. zipcode,
  738. othernumber,
  739. otheridnumber,
  740. officialcalculus,
  741. created_by,
  742. created_time,
  743. updated_by,
  744. updated_time,
  745. label1,
  746. label2,
  747. label3,
  748. label4,
  749. label5,
  750. label6,
  751. label7,
  752. label8,
  753. label9,
  754. label10,
  755. label11,
  756. label12,
  757. label13,
  758. label14,
  759. label15,
  760. label16,
  761. label17,
  762. label18,
  763. label19,
  764. label20,
  765. label21,
  766. label22,
  767. label23,
  768. -- label24,
  769. -- label25,
  770. -- label26,
  771. -- label27,
  772. label28,
  773. -- label29,
  774. -- label30,
  775. -- label31,
  776. -- label32,
  777. -- label33,
  778. label34,
  779. label35,
  780. label36,
  781. label37,
  782. label38,
  783. label39,
  784. label40,
  785. label41,
  786. label42,
  787. -- label43,
  788. -- label44,
  789. -- label45,
  790. -- label46,
  791. -- label47,
  792. -- label48,
  793. -- label49,
  794. -- label50,
  795. label51,
  796. -- label52,
  797. label53,
  798. -- label54,
  799. -- label55,
  800. -- label56,
  801. -- label57,
  802. -- label58,
  803. -- label59,
  804. label60,
  805. -- label61,
  806. -- label62,
  807. label63,
  808. -- label64,
  809. -- label65,
  810. -- label66,
  811. label67,
  812. -- label68,
  813. label69,
  814. label70,
  815. label71,
  816. label72,
  817. label73,
  818. label74,
  819. label75,
  820. label76,
  821. label77,
  822. -- label78,
  823. -- label79,
  824. label80,
  825. -- label81,
  826. label82,
  827. label83,
  828. label84,
  829. label85,
  830. label86,
  831. label87,
  832. -- label88,
  833. -- label89,
  834. label90,
  835. -- label91,
  836. -- label92,
  837. label93,
  838. -- label94,
  839. -- label95,
  840. label96,
  841. label97,
  842. label98,
  843. label99,
  844. label100,
  845. label101,
  846. label102,
  847. label103,
  848. label104,
  849. label105,
  850. label106,
  851. -- label107,
  852. -- label108,
  853. -- label109,
  854. -- label110,
  855. -- label111,
  856. label112,
  857. -- label113,
  858. label114,
  859. -- label115,
  860. label116,
  861. -- label117,
  862. label118,
  863. label119,
  864. -- label120,
  865. salecom
  866. )
  867. SELECT
  868. row_number()OVER(ORDER BY i.scustid),
  869. i.indid,
  870. i.custid,
  871. i.scustid,
  872. i.name,
  873. i.birthday,
  874. i.nobirth,
  875. i.sobirth,
  876. i.cobirth,
  877. i.dday,
  878. i.gender,
  879. i.ethnic,
  880. i.nation,
  881. i.homeadress,
  882. i.regresidence,
  883. i.maritalstat,
  884. i.maritalstatdate,
  885. i.offspring,
  886. i.support,
  887. i.empstat,
  888. i.empstatdate,
  889. i.raid,
  890. i.ral,
  891. i.al,
  892. i.coadress,
  893. i.pmphone,
  894. i.mhone1,
  895. i.mhone2,
  896. i.sophone,
  897. i.height,
  898. i.weight,
  899. i.cillness,
  900. i.pillness,
  901. i.cdiseases,
  902. i.bmi,
  903. i.fmhistory,
  904. i.evadate,
  905. i.cohevaluation,
  906. i.hphone,
  907. i.occupationid,
  908. i.occupation,
  909. i.odate,
  910. i.employer,
  911. i.wphone,
  912. i.empdate,
  913. i.lemployer,
  914. i.idcard,
  915. i.passport,
  916. i.dlicense,
  917. i.education,
  918. i.university,
  919. i.edate,
  920. i.wechat,
  921. i.weibo,
  922. i.email,
  923. i.qq,
  924. i.tiktok,
  925. i.saccount1,
  926. i.sa1cat,
  927. i.saccount2,
  928. i.sa2cat,
  929. i.ctype,
  930. i.father,
  931. i.mother,
  932. i.mate,
  933. i.child1,
  934. i.child2,
  935. i.cochild,
  936. i.rpid,
  937. i.rpdescribe,
  938. i.corp,
  939. i.vid,
  940. i.vdescribe,
  941. i.covehicle,
  942. i.anniversary1,
  943. i.a1describe,
  944. i.anniversary2,
  945. i.a2describe,
  946. i.soanniversary,
  947. i.custtype,
  948. i.bankname,
  949. i.tobankcard,
  950. i.accname,
  951. i.bankaccno,
  952. i.cobaccount,
  953. i.sotlirisk,
  954. i.soairisk,
  955. i.sosiirisk,
  956. i.somcirisk,
  957. i.someirisk,
  958. i.soefirisk,
  959. i.sopirisk,
  960. i.sowmirisk,
  961. i.custclass,
  962. i.convalue,
  963. i.awarded3,
  964. i.awarded2,
  965. i.awarded1,
  966. i.sovalue,
  967. i.enddate,
  968. i.systemtag1,
  969. i.systemtag2,
  970. i.systemtag3,
  971. i.systemtag4,
  972. i.systemtag5,
  973. i.cocommunication,
  974. i.lcdate,
  975. i.lctype,
  976. i.lcmethod,
  977. i.cocomplaint,
  978. i.lcptdate,
  979. i.lcptreason,
  980. i.lcptlink,
  981. i.lcptresult,
  982. i.lcptduration,
  983. i.lcptperson,
  984. i.soppremium,
  985. i.lappdate,
  986. i.cndate,
  987. i.cnstatus,
  988. i.coclaim,
  989. i.soclaim,
  990. i.cocnotification,
  991. i.fadate,
  992. i.fachannel,
  993. i.faorg,
  994. i.lpno,
  995. i.lpstate,
  996. i.lpname,
  997. i.lpchannel,
  998. i.lporg,
  999. i.copolicy,
  1000. i.lpostype,
  1001. i.iaccno1,
  1002. i.iaccname1,
  1003. i.iaccno2,
  1004. i.iaccname2,
  1005. i.iaccno3,
  1006. i.iaccname3,
  1007. i.soiaccount1,
  1008. i.soiaccount2,
  1009. i.soiaccount3,
  1010. i.coiaccount,
  1011. i.homeid,
  1012. i.branchcode,
  1013. i.custstate,
  1014. i.datasource,
  1015. i.smoking,
  1016. i.drinking,
  1017. i.pregnancy,
  1018. i.hobby1,
  1019. i.hobby2,
  1020. i.hobby3,
  1021. i.pincome,
  1022. i.fincome,
  1023. i.regtype,
  1024. i.incomesource,
  1025. i.sistatus,
  1026. i.novpolicy,
  1027. i.noivpolicy,
  1028. i.nostinsurance,
  1029. i.nospinsurance,
  1030. i.iself,
  1031. i.iparent,
  1032. i.ichildren,
  1033. i.imate,
  1034. i.policybelong,
  1035. i.zipcode,
  1036. i.othernumber,
  1037. i.otheridnumber,
  1038. i.officialcalculus,
  1039. i.created_by,
  1040. sysdate as created_time,
  1041. i.updated_by,
  1042. i.updated_time,
  1043. i.label1,
  1044. i.label2,
  1045. i.label3,
  1046. i.label4,
  1047. i.label5,
  1048. i.label6,
  1049. i.label7,
  1050. i.label8,
  1051. i.label9,
  1052. i.label10,
  1053. i.label11,
  1054. i.label12,
  1055. i.label13,
  1056. i.label14,
  1057. i.label15,
  1058. i.label16,
  1059. i.label17,
  1060. i.label18,
  1061. i.label19,
  1062. i.label20,
  1063. i.label21,
  1064. i.label22,
  1065. i.label23,
  1066. -- i.label24,
  1067. -- i.label25,
  1068. -- i.label26,
  1069. -- i.label27,
  1070. i.label28,
  1071. -- i.label29,
  1072. -- i.label30,
  1073. -- i.label31,
  1074. -- i.label32,
  1075. -- i.label33,
  1076. i.label34,
  1077. i.label35,
  1078. i.label36,
  1079. i.label37,
  1080. i.label38,
  1081. i.label39,
  1082. i.label40,
  1083. i.label41,
  1084. i.label42,
  1085. -- i.label43,
  1086. -- i.label44,
  1087. -- i.label45,
  1088. -- i.label46,
  1089. -- i.label47,
  1090. -- i.label48,
  1091. -- i.label49,
  1092. -- i.label50,
  1093. i.label51,
  1094. -- i.label52,
  1095. i.label53,
  1096. -- i.label54,
  1097. -- i.label55,
  1098. -- i.label56,
  1099. -- i.label57,
  1100. -- i.label58,
  1101. -- i.label59,
  1102. i.label60,
  1103. -- i.label61,
  1104. -- i.label62,
  1105. i.label63,
  1106. -- i.label64,
  1107. -- i.label65,
  1108. -- i.label66,
  1109. i.label67,
  1110. -- i.label68,
  1111. i.label69,
  1112. i.label70,
  1113. i.label71,
  1114. i.label72,
  1115. i.label73,
  1116. i.label74,
  1117. i.label75,
  1118. i.label76,
  1119. i.label77,
  1120. -- i.label78,
  1121. -- i.label79,
  1122. i.label80,
  1123. -- i.label81,
  1124. i.label82,
  1125. i.label83,
  1126. i.label84,
  1127. i.label85,
  1128. i.label86,
  1129. i.label87,
  1130. -- i.label88,
  1131. -- i.label89,
  1132. i.label90,
  1133. -- i.label91,
  1134. -- i.label92,
  1135. i.label93,
  1136. -- i.label94,
  1137. -- i.label95,
  1138. i.label96,
  1139. i.label97,
  1140. i.label98,
  1141. i.label99,
  1142. i.label100,
  1143. i.label101,
  1144. i.label102,
  1145. i.label103,
  1146. i.label104,
  1147. i.label105,
  1148. i.label106,
  1149. -- i.label107,
  1150. -- i.label108,
  1151. -- i.label109,
  1152. -- i.label110,
  1153. -- i.label111,
  1154. i.label112,
  1155. -- i.label113,
  1156. i.label114,
  1157. -- i.label115,
  1158. i.label116,
  1159. -- i.label117,
  1160. i.label118,
  1161. i.label119,
  1162. -- i.label120,
  1163. t.salecom
  1164. FROM (
  1165. -- 投保人和被保人都作为客户处理
  1166. -- 投保人
  1167. SELECT distinct p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  1168. union
  1169. -- 被保人
  1170. SELECT distinct p.insuredno as customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  1171. ) t, shanglifeecif.individual i WHERE t.customerno = i.scustid;
  1172. dbms_output.put_line('init_customerno_salecom_relation 函数跑批完成!');
  1173. EXCEPTION
  1174. WHEN HIVE_EXCEPTION THEN
  1175. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1176. WHEN Others THEN
  1177. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1178. END;
  1179. CREATE OR REPLACE PROCEDURE shanglifeecif.init_individual_main() -- 初始化 数据全部插入
  1180. IS
  1181. DECLARE
  1182. individual_count int
  1183. strsql string
  1184. BEGIN
  1185. shanglifeecif.customertotaltemp();
  1186. DELETE FROM shanglifeecif.individual;
  1187. --初始化客户信息
  1188. shanglifeecif.init_all_individual();
  1189. --更新用户等级信息
  1190. shanglifeecif.up_t_customers_class_1();
  1191. --更新其它信息
  1192. shanglifeecif.up_other_customerinfo();
  1193. --更新被保人信息
  1194. shanglifeecif.update_insuredinfo();
  1195. /*
  1196. customerno_salecom_relation表中字段的值是从individual表复制来的,cron.sh中还有一些为individual表字段赋值的步骤。
  1197. 所以初始化和更新customerno_salecom_relation表放在cron.sh最后,这样就能保证初始化时individual表中所有字段都已经赋值完毕
  1198. -- 初始化用户渠道关系表
  1199. shanglifeecif.init_customerno_salecom_relation();
  1200. --客户信息添加渠道
  1201. shanglifeecif.init_Individual_salecom();
  1202. -- 分渠道重新计算标签值,并更新到用户渠道关系表中
  1203. shanglifeecif.update_customerno_salecom_relation_labels();
  1204. */
  1205. END;
  1206. CREATE OR REPLACE PROCEDURE shanglifeecif.init_individual_salecom() IS
  1207. DECLARE
  1208. BEGIN
  1209. -- 客户信息添加渠道
  1210. --
  1211. UPDATE shanglifeecif.Individual si1 SET si1.SALECOM = (
  1212. SELECT t.salecoms FROM (
  1213. SELECT customerno , concat_ws(',',collect_set(salecom)) AS salecoms FROM (
  1214. SELECT b.scustid AS customerno ,b.salecom AS salecom FROM
  1215. shanglifeecif.individual a , shanglifeecif.customerno_salecom_relation b
  1216. WHERE a.scustid = b.scustid
  1217. ) GROUP BY customerno
  1218. ) t
  1219. WHERE t.customerno = si1.scustid);
  1220. dbms_output.put_line('init_Individual_salecom 函数跑批完成!');
  1221. EXCEPTION
  1222. WHEN HIVE_EXCEPTION THEN
  1223. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1224. WHEN Others THEN
  1225. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1226. END;
  1227. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main()
  1228. IS
  1229. DECLARE
  1230. s_count int
  1231. BEGIN
  1232. DELETE FROM shanglifeecif.IndRelationShip;
  1233. --从保单信息表(POLICY_INFORMATION)获取投保人和被保人的关系并
  1234. --第一步取关系父母,子女
  1235. insert into shanglifeecif.IndRelationShip(
  1236. irsid,
  1237. RSType,
  1238. IndID1,
  1239. Name1,
  1240. IDCard1,
  1241. Role1,
  1242. IndID2,
  1243. Name2,
  1244. IDCard2,
  1245. RSSTime,
  1246. Role2,
  1247. salecom
  1248. )SELECT
  1249. reflect("java.util.UUID", "randomUUID"),
  1250. '父母',
  1251. p.CUSTOMERNO,
  1252. max(p.NAME),
  1253. max(p.IDNO),
  1254. CASE max(p.sex)
  1255. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1256. p.INSUREDNO,
  1257. max(p.INSUREDNAME),
  1258. max(p.INSUREDIDNO),
  1259. min(p.polapplydate),
  1260. CASE max(p.INSUREDSEX)
  1261. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1262. salecom
  1263. FROM dsj.POLICY_INFORMATION p
  1264. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1265. AND p.birthday > p.insuredbirthday
  1266. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  1267. insert into shanglifeecif.IndRelationShip(
  1268. irsid,
  1269. RSType,
  1270. IndID1,
  1271. Name1,
  1272. IDCard1,
  1273. Role1,
  1274. IndID2,
  1275. Name2,
  1276. IDCard2,
  1277. RSSTime,
  1278. Role2,
  1279. salecom
  1280. )
  1281. SELECT
  1282. reflect("java.util.UUID", "randomUUID"),
  1283. '子女',
  1284. p.CUSTOMERNO,
  1285. max(p.NAME),
  1286. max(p.IDNO),
  1287. CASE max(p.sex)
  1288. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1289. p.INSUREDNO,
  1290. max(p.INSUREDNAME),
  1291. max(p.INSUREDIDNO),
  1292. min(p.polapplydate),
  1293. CASE max(p.INSUREDSEX)
  1294. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1295. salecom
  1296. FROM dsj.POLICY_INFORMATION p
  1297. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1298. AND p.birthday < p.insuredbirthday
  1299. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  1300. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  1301. insert into shanglifeecif.IndRelationShip(
  1302. irsid,
  1303. RSType,
  1304. IndID1,
  1305. Name1,
  1306. IDCard1,
  1307. Role1,
  1308. IndID2,
  1309. Name2,
  1310. IDCard2,
  1311. RSSTime,
  1312. Role2,
  1313. salecom
  1314. )SELECT
  1315. reflect("java.util.UUID", "randomUUID"),
  1316. '祖父母、外祖父母',
  1317. p.CUSTOMERNO,
  1318. max(p.NAME),
  1319. max(p.IDNO),
  1320. CASE max(p.sex)
  1321. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1322. p.INSUREDNO,
  1323. max(p.INSUREDNAME),
  1324. max(p.INSUREDIDNO),
  1325. min(p.polapplydate),
  1326. CASE max(p.INSUREDSEX)
  1327. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1328. salecom
  1329. FROM dsj.POLICY_INFORMATION p
  1330. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1331. AND p.birthday > p.insuredbirthday
  1332. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  1333. insert into shanglifeecif.IndRelationShip(
  1334. irsid,
  1335. RSType,
  1336. IndID1,
  1337. Name1,
  1338. IDCard1,
  1339. Role1,
  1340. IndID2,
  1341. Name2,
  1342. IDCard2,
  1343. RSSTime,
  1344. Role2,
  1345. salecom
  1346. )SELECT
  1347. reflect("java.util.UUID", "randomUUID"),
  1348. '祖孙、外祖孙',
  1349. p.CUSTOMERNO,
  1350. max(p.NAME),
  1351. max(p.IDNO),
  1352. CASE max(p.sex)
  1353. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1354. p.INSUREDNO,
  1355. max(p.INSUREDNAME),
  1356. max(p.INSUREDIDNO),
  1357. min(p.polapplydate),
  1358. CASE max(p.INSUREDSEX)
  1359. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1360. salecom
  1361. FROM dsj.POLICY_INFORMATION p
  1362. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1363. AND p.birthday < p.insuredbirthday
  1364. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  1365. --第三步取配偶和其他
  1366. insert into shanglifeecif.IndRelationShip(
  1367. irsid,
  1368. RSType,
  1369. IndID1,
  1370. Name1,
  1371. IDCard1,
  1372. Role1,
  1373. IndID2,
  1374. Name2,
  1375. IDCard2,
  1376. RSSTime,
  1377. Role2,
  1378. salecom
  1379. )SELECT
  1380. reflect("java.util.UUID", "randomUUID"),
  1381. max(p.RELATIONTOAPPNT),
  1382. p.CUSTOMERNO,
  1383. max(p.NAME),
  1384. max(p.IDNO),
  1385. CASE max(p.RELATIONTOAPPNT)
  1386. WHEN '配偶'
  1387. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1388. ELSE max(p.RELATIONTOAPPNT)
  1389. END,
  1390. p.INSUREDNO,
  1391. max(p.INSUREDNAME),
  1392. max(p.INSUREDIDNO),
  1393. min(p.polapplydate),
  1394. CASE max(p.RELATIONTOAPPNT)
  1395. WHEN '配偶'
  1396. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1397. ELSE max(p.RELATIONTOAPPNT)
  1398. END,
  1399. salecom
  1400. FROM dsj.POLICY_INFORMATION p
  1401. WHERE p.RELATIONTOAPPNT = '配偶'
  1402. or p.RELATIONTOAPPNT = '其他'
  1403. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  1404. -- 完善被保人关系
  1405. -- waite up sqls running end then run this sql if time is less will be loss data
  1406. dbms_lock.sleep(60);
  1407. insert into shanglifeecif.IndRelationShip(
  1408. irsid,
  1409. RSType,
  1410. IndID1,
  1411. Name1,
  1412. IDCard1,
  1413. Role1,
  1414. IndID2,
  1415. Name2,
  1416. IDCard2,
  1417. Role2,
  1418. salecom
  1419. )SELECT reflect("java.util.UUID", "randomUUID"),
  1420. CASE RSType
  1421. WHEN '父母' THEN '子女'
  1422. WHEN '子女' THEN '父母'
  1423. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1424. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1425. WHEN '配偶' THEN '配偶'
  1426. ELSE RSType
  1427. END,
  1428. IndID2,
  1429. Name2,
  1430. IDCard2,
  1431. Role2,
  1432. IndID1,
  1433. Name1,
  1434. IDCard1,
  1435. Role1,
  1436. salecom
  1437. FROM shanglifeecif.IndRelationShip sis ;
  1438. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1439. EXCEPTION
  1440. WHEN HIVE_EXCEPTION THEN
  1441. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1442. WHEN Others THEN
  1443. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1444. END;
  1445. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main2( )
  1446. IS
  1447. DECLARE
  1448. s_count int
  1449. BEGIN
  1450. -- 完善被保人关系
  1451. /** */
  1452. insert into shanglifeecif.IndRelationShip(
  1453. irsid,
  1454. RSType,
  1455. IndID1,
  1456. Name1,
  1457. IDCard1,
  1458. Role1,
  1459. IndID2,
  1460. Name2,
  1461. IDCard2,
  1462. Role2
  1463. )SELECT reflect("java.util.UUID", "randomUUID"),
  1464. CASE RSType
  1465. WHEN '父母' THEN '子女'
  1466. WHEN '子女' THEN '父母'
  1467. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1468. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1469. WHEN '配偶' THEN '配偶'
  1470. ELSE RSType
  1471. END,
  1472. IndID2,
  1473. Name2,
  1474. IDCard2,
  1475. Role2,
  1476. IndID1,
  1477. Name1,
  1478. IDCard1,
  1479. Role1
  1480. FROM shanglifeecif.IndRelationShip sis ;
  1481. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1482. EXCEPTION
  1483. WHEN HIVE_EXCEPTION THEN
  1484. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1485. WHEN Others THEN
  1486. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1487. END;
  1488. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement_main() -- 创建主存储过程
  1489. IS
  1490. BEGIN
  1491. DELETE FROM shanglifeecif.insurancearrangement;
  1492. --根据policy_information 更新保单表
  1493. shanglifeecif.init_insurancearrangement_policy_information();
  1494. --其他标的字段 更新
  1495. shanglifeecif.update_risk_categories();
  1496. END;
  1497. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement_policy_information() -- 创建主存储过程
  1498. IS
  1499. BEGIN
  1500. INSERT INTO shanglifeecif.insurancearrangement(
  1501. iaid ,--'保单ID',
  1502. policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  1503. pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  1504. pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  1505. norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  1506. payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  1507. applicantscustid ,-- '投保人 上游客户号,再找到individualid',
  1508. appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  1509. appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  1510. insuredscustid ,-- '主被保险人 游客户号',
  1511. insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  1512. inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  1513. productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  1514. productname,--险种名称
  1515. policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  1516. payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  1517. policystate,--保单状态
  1518. prem,--保费
  1519. sumprem, --累计保费,
  1520. Risk,--保额
  1521. NPDate,--下次缴费日期
  1522. PADate,--投保日期
  1523. pisdate,--签单日期
  1524. AgentOrg,--代理机构
  1525. schannel,--销售渠道
  1526. schannelname,--销售渠道中文
  1527. salecomname,--业绩归属中文
  1528. POService,--保全标志
  1529. PWComp,--承保分公司
  1530. security ,--保险期原始值
  1531. agrmntage ,--保险期限
  1532. salesperson,--业务员标识代码
  1533. SPName,--业务员名称
  1534. renewalDate,--续保日期
  1535. created_by ,-- '创建人',
  1536. created_time -- '创建时间',
  1537. )
  1538. SELECT
  1539. row_number()over(),
  1540. trim(CONTNO) as CONTNO,--policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  1541. trim(CVALIDATE) as CVALIDATE,--pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  1542. trim(ENDDATE) as ENDDATE,--pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  1543. PAYCOUNT,--norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  1544. trim(PAYINTV) as PAYINTV,--payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  1545. trim(CUSTOMERNO) as CUSTOMERNO,--applicantid ,-- '投保人 根据POLICY_INFORMATION.CUSTOMERNO关联individual上游客户号,再找到individualid',
  1546. trim(NAME) as NAME,--appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  1547. trim(IDNO) as IDNO,--appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  1548. trim(insuredno) as insuredno,--insuredid ,-- '主被保险人 insuredno',
  1549. trim(INSUREDNAME) as INSUREDNAME,--insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  1550. trim(INSUREDIDNO) as INSUREDIDNO,--inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  1551. trim(RISKCODE) as RISKCODE,--productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  1552. trim(RISKNAME) as RISKNAME, --productname 险种名称
  1553. trim(SALECOM) as SALECOM,--policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  1554. PAYENDYEAR,--payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  1555. trim(APPFLAG) as APPFLAG, --保单状态
  1556. prem,--保费
  1557. sumprem,--累计保费
  1558. AMNT,--保额
  1559. trim(PAYTODATE) as PAYTODATE,--下次缴费日期
  1560. trim(polapplydate) as polapplydate,--投保日期
  1561. trim(SIGNDATE) as SIGNDATE,--签单日期
  1562. trim(AGENTCOM) as AGENTCOM,--代理机构
  1563. trim(SALECHNL) as SALECHNL,--销售渠道
  1564. trim(SALECHNLNAME) as SALECHNLNAME,--销售渠道中文
  1565. trim(salecomname) as salecomname,--业绩归属中文
  1566. trim(PRESERVATIONFLAG) as PRESERVATIONFLAG,--保全标志
  1567. "上海人寿上海分公司",
  1568. trim(security) as security, --保险期原始值
  1569. case
  1570. when security ='终身' then 42720
  1571. when security = '至100周岁' then 36500
  1572. when security = '至80周岁' then 29200
  1573. when security = '70年' then 25550
  1574. when security = '至70周岁' then 25550
  1575. when security = '至65周岁' then 23725
  1576. when security = '至60周岁' then 21900
  1577. when security = '30年' then 10950
  1578. when security = '20年' then 7300
  1579. when security = '10年' then 3650
  1580. when security = '6年' then 2190
  1581. when security = '5年' then 1825
  1582. when security = '1年' then 365
  1583. when security = '180天' then 180
  1584. when security = '6月' then 180
  1585. when security = '90天' then 90
  1586. when security = '3月' then 90
  1587. when security = '1月' then 30
  1588. when security = '30天' then 30
  1589. when security = '15天' then 15
  1590. when security = '7天' then 7
  1591. end,
  1592. trim(AGENTCODE) as AGENTCODE,--代理人代码
  1593. trim(AGENTNAME) as AGENTNAME,--代理人名称
  1594. trim(paytodate) as paytodate,--续保日期
  1595. 'admin',
  1596. sysdate()
  1597. FROM dsj.policy_information;
  1598. --更新INSURANCEINFO 表中的信息
  1599. UPDATE shanglifeecif.insurancearrangement a SET (
  1600. pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1601. --pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1602. --padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1603. --policystate ,--INSURANCEINFO,appflag
  1604. --prem ,-- '总保费 INSURANCEINFO.PREM',
  1605. --productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1606. agentchannel -- '代理渠道 INSURANCEINFO.SELLTYPE',
  1607. ) = (
  1608. select
  1609. trim(b.PRTNO) as PRTNO,--pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1610. --SIGNDATE,--pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1611. --POLAPPLYDATE,--padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1612. --appflag,--policystate ,--INSURANCEINFO,appflag
  1613. --PREM,--prem ,-- '总保费 INSURANCEINFO.PREM',
  1614. --RISKNAME,--productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1615. trim(b.SELLTYPE) as SELLTYPE--agentchannel ,-- '代理渠道 INSURANCEINFO.SELLTYPE',
  1616. from dsj.INSURANCEINFO b
  1617. where b.contno = a.policyno
  1618. ) WHERE 1=1 ;
  1619. dbms_output.put_line('init_insurancearrangement_policy_information函数跑批完成!');
  1620. EXCEPTION
  1621. WHEN HIVE_EXCEPTION THEN
  1622. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1623. WHEN Others THEN
  1624. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1625. END;
  1626. CREATE OR REPLACE PROCEDURE shanglifeecif.insuranceclaimthread_main() -- 创建主存储过程
  1627. IS
  1628. BEGIN
  1629. insert into shanglifeecif.insuranceclaimthread (
  1630. icthreadid ,--'保险理赔Id',1
  1631. crno ,--'立案号',2
  1632. --companyno ,-- '公司代码',
  1633. policyno ,--'保险单号 INSURANCE_CLAIM.CONTNO',3
  1634. --applicantid ,--'投保人ID',
  1635. --appname ,--'投保人名称',
  1636. --appphone ,--'投保人手机',
  1637. --appcertid ,--'投保人证件号码 INSURANCE_CLAIM.RISKDATE',
  1638. cnno ,--'报案号',4
  1639. losstime ,-- '损失发生时间',5
  1640. --rpid ,-- '报案人',
  1641. rpname ,--'报案人名称',6
  1642. --rpphone ,-- '报案人电话',
  1643. --lpid ,--'出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  1644. lpscutid,--'出险人上游客户号7
  1645. lpname ,-- '出险人名称',
  1646. cndate ,--'报案日期 INSURANCE_CLAIM.RPTDATE',
  1647. lossdescribe ,-- '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  1648. crdate ,-- '立案日期 INSURANCE_CLAIM.RGTDATE',
  1649. cndescribe ,--'报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  1650. claimstatus ,--'理赔状态 案件的状态,例如:录入、已立案等',
  1651. csdate ,--'理赔状态日期',
  1652. relationship ,-- '报案人与出险人关系',
  1653. ccno ,-- '赔案号 AUDIT_CLAIM_INSURANCE.CLMNO',
  1654. ccstatus ,--'赔案状态',
  1655. --ccsdate ,-- '赔案状态日期',
  1656. productid ,--'险种代码 INSURANCE_CLAIM_HEALTH.RISKCODE',
  1657. productname, --'险种名称 INSURANCE_CLAIM_HEALTH.RISKNAME',
  1658. ccamt ,--'赔付金额 INSURANCE_CLAIM_HEALTH.realpay',
  1659. --branchcode,-- '机构代码',
  1660. claimcasestatus ,--'案件状态INSURANCE_CLAIM_HEALTH.LLCLAIMSTATE',
  1661. accidenttype,
  1662. created_by ,
  1663. created_time
  1664. -- updated_time,
  1665. -- updated_by
  1666. ) select
  1667. row_number()over(),--1
  1668. trim(rgtno) as rgtno,--2
  1669. trim(contno) as contno,--3
  1670. trim(rptno) as rptno,--报案号4
  1671. trim(riskdate) as riskdate,--损失发生的时间5
  1672. trim(rptorname) as rptorname,--报案人名称6
  1673. trim(INSUREDNO) as INSUREDNO,--出险人 上游客户号
  1674. trim(INSUREDNAME) as INSUREDNAME,
  1675. trim(rptdate) as rptdate,
  1676. trim(lloccurreason) as lloccurreason,
  1677. trim(rgtdate) as rgtdate,
  1678. trim(ACCDESC) as ACCDESC,--报案描述
  1679. trim(llclaimstate) as llclaimstate,
  1680. trim(auditdate) as auditdate,--审批日期
  1681. trim(relationname) as relationname,
  1682. trim(clmno) as clmno,--赔案号
  1683. trim(llgettype) as llgettype,--赔案状态
  1684. trim(riskcode) as riskcode,
  1685. trim(riskname) as riskname,
  1686. realpay,
  1687. trim(llclaimstate) as llclaimstate,--案件状态
  1688. trim(accidenttype) as accidenttype,
  1689. 'admin',
  1690. sysdate()
  1691. from dsj.INSURANCE_CLAIM where contno is not null;
  1692. -- 更新渠道字段
  1693. shanglifeecif.update_insuranceclaimthread_add_salecom();
  1694. dbms_output.put_line('insuranceclaimthread_main函数跑批完成!');
  1695. EXCEPTION
  1696. WHEN HIVE_EXCEPTION THEN
  1697. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1698. WHEN Others THEN
  1699. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1700. END;
  1701. CREATE OR REPLACE PROCEDURE shanglifeecif.newprocedure( )
  1702. IS
  1703. DECLARE
  1704. s_count int
  1705. BEGIN
  1706. DELETE FROM shanglifeecif.IndRelationShip;
  1707. --从保单信息表(dsj.POLICY_INFORMATION)获取投保人和被保人的关系并
  1708. --第一步取关系父母,子女
  1709. insert into shanglifeecif.IndRelationShip(
  1710. irsid,
  1711. RSType,
  1712. IndID1,
  1713. Name1,
  1714. IDCard1,
  1715. Role1,
  1716. IndID2,
  1717. Name2,
  1718. IDCard2,
  1719. RSSTime,
  1720. Role2
  1721. )SELECT
  1722. reflect("java.util.UUID", "randomUUID"),
  1723. '父母',
  1724. p.CUSTOMERNO,
  1725. max(p.NAME),
  1726. max(p.IDNO),
  1727. CASE max(p.sex)
  1728. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1729. p.INSUREDNO,
  1730. max(p.INSUREDNAME),
  1731. max(p.INSUREDIDNO),
  1732. min(p.polapplydate),
  1733. CASE max(p.INSUREDSEX)
  1734. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END
  1735. FROM dsj.POLICY_INFORMATION p
  1736. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1737. AND p.birthday > p.insuredbirthday
  1738. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1739. insert into shanglifeecif.IndRelationShip(
  1740. irsid,
  1741. RSType,
  1742. IndID1,
  1743. Name1,
  1744. IDCard1,
  1745. Role1,
  1746. IndID2,
  1747. Name2,
  1748. IDCard2,
  1749. RSSTime,
  1750. Role2
  1751. )
  1752. SELECT
  1753. reflect("java.util.UUID", "randomUUID"),
  1754. '子女',
  1755. p.CUSTOMERNO,
  1756. max(p.NAME),
  1757. max(p.IDNO),
  1758. CASE max(p.sex)
  1759. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1760. p.INSUREDNO,
  1761. max(p.INSUREDNAME),
  1762. max(p.INSUREDIDNO),
  1763. min(p.polapplydate),
  1764. CASE max(p.INSUREDSEX)
  1765. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END
  1766. FROM dsj.POLICY_INFORMATION p
  1767. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1768. AND p.birthday < p.insuredbirthday
  1769. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1770. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  1771. insert into shanglifeecif.IndRelationShip(
  1772. irsid,
  1773. RSType,
  1774. IndID1,
  1775. Name1,
  1776. IDCard1,
  1777. Role1,
  1778. IndID2,
  1779. Name2,
  1780. IDCard2,
  1781. RSSTime,
  1782. Role2
  1783. )SELECT
  1784. reflect("java.util.UUID", "randomUUID"),
  1785. '祖父母、外祖父母',
  1786. p.CUSTOMERNO,
  1787. max(p.NAME),
  1788. max(p.IDNO),
  1789. CASE max(p.sex)
  1790. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1791. p.INSUREDNO,
  1792. max(p.INSUREDNAME),
  1793. max(p.INSUREDIDNO),
  1794. min(p.polapplydate),
  1795. CASE max(p.INSUREDSEX)
  1796. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END
  1797. FROM dsj.POLICY_INFORMATION p
  1798. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1799. AND p.birthday > p.insuredbirthday
  1800. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1801. insert into shanglifeecif.IndRelationShip(
  1802. irsid,
  1803. RSType,
  1804. IndID1,
  1805. Name1,
  1806. IDCard1,
  1807. Role1,
  1808. IndID2,
  1809. Name2,
  1810. IDCard2,
  1811. RSSTime,
  1812. Role2
  1813. )SELECT
  1814. reflect("java.util.UUID", "randomUUID"),
  1815. '祖孙、外祖孙',
  1816. p.CUSTOMERNO,
  1817. max(p.NAME),
  1818. max(p.IDNO),
  1819. CASE max(p.sex)
  1820. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1821. p.INSUREDNO,
  1822. max(p.INSUREDNAME),
  1823. max(p.INSUREDIDNO),
  1824. min(p.polapplydate),
  1825. CASE max(p.INSUREDSEX)
  1826. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END
  1827. FROM dsj.POLICY_INFORMATION p
  1828. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1829. AND p.birthday < p.insuredbirthday
  1830. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1831. --第三步取配偶和其他
  1832. insert into shanglifeecif.IndRelationShip(
  1833. irsid,
  1834. RSType,
  1835. IndID1,
  1836. Name1,
  1837. IDCard1,
  1838. Role1,
  1839. IndID2,
  1840. Name2,
  1841. IDCard2,
  1842. RSSTime,
  1843. Role2
  1844. )SELECT
  1845. reflect("java.util.UUID", "randomUUID"),
  1846. max(p.RELATIONTOAPPNT),
  1847. p.CUSTOMERNO,
  1848. max(p.NAME),
  1849. max(p.IDNO),
  1850. CASE max(p.RELATIONTOAPPNT)
  1851. WHEN '配偶'
  1852. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1853. ELSE max(p.RELATIONTOAPPNT)
  1854. END,
  1855. p.INSUREDNO,
  1856. max(p.INSUREDNAME),
  1857. max(p.INSUREDIDNO),
  1858. min(p.polapplydate),
  1859. CASE max(p.RELATIONTOAPPNT)
  1860. WHEN '配偶'
  1861. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1862. ELSE max(p.RELATIONTOAPPNT)
  1863. END
  1864. FROM dsj.POLICY_INFORMATION p
  1865. WHERE p.RELATIONTOAPPNT = '配偶'
  1866. -- or p.RELATIONTOAPPNT = '其他'
  1867. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1868. -- 完善被保人关系
  1869. /** */
  1870. insert into shanglifeecif.IndRelationShip(
  1871. irsid,
  1872. RSType,
  1873. IndID1,
  1874. Name1,
  1875. IDCard1,
  1876. Role1,
  1877. IndID2,
  1878. Name2,
  1879. IDCard2,
  1880. Role2
  1881. )SELECT reflect("java.util.UUID", "randomUUID"),
  1882. CASE RSType
  1883. WHEN '父母' THEN '子女'
  1884. WHEN '子女' THEN '父母'
  1885. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1886. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1887. WHEN '配偶' THEN '配偶'
  1888. ELSE RSType
  1889. END,
  1890. IndID2,
  1891. Name2,
  1892. IDCard2,
  1893. Role2,
  1894. IndID1,
  1895. Name1,
  1896. IDCard1,
  1897. Role1
  1898. FROM shanglifeecif.IndRelationShip sis ;
  1899. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1900. EXCEPTION
  1901. WHEN HIVE_EXCEPTION THEN
  1902. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1903. WHEN Others THEN
  1904. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1905. END;
  1906. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_bq()
  1907. IS
  1908. DECLARE
  1909. p_count int
  1910. BEGIN
  1911. insert into shanglifeecif.partytimeline (
  1912. TripID,
  1913. PolicyNo,
  1914. PartyID,
  1915. name,
  1916. PRole,
  1917. Scenario,
  1918. SDate,
  1919. DESCRIBE,
  1920. created_by ,
  1921. created_time
  1922. )select
  1923. reflect("java.util.UUID", "randomUUID"),
  1924. i.contno,
  1925. i.customerno,
  1926. max(i.name),
  1927. '投保人' AS tbr,
  1928. '保全' AS bq,
  1929. l.edorappdate,
  1930. max(lm.edorname),
  1931. 'admin',
  1932. sysdate()
  1933. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information i
  1934. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND i.contno = l.contno
  1935. GROUP BY i.customerno,i.contno,l.edorappdate,l.edortype;
  1936. dbms_output.put_line('partytimeline_bq函数跑批完成!');
  1937. EXCEPTION
  1938. WHEN HIVE_EXCEPTION THEN
  1939. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1940. WHEN Others THEN
  1941. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1942. END
  1943. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_hf()
  1944. IS
  1945. DECLARE
  1946. p_count int
  1947. BEGIN
  1948. insert into shanglifeecif.partytimeline (
  1949. TripID,
  1950. PolicyNo,
  1951. PartyID,
  1952. name,
  1953. PRole,
  1954. Scenario,
  1955. SDate,
  1956. DESCRIBE,
  1957. created_by ,
  1958. created_time
  1959. ) SELECT
  1960. reflect("java.util.UUID", "randomUUID"),
  1961. cad.productno,
  1962. cac.customerno,
  1963. max(cac.customername),
  1964. '投保人',
  1965. '回访',
  1966. cad.lastdealtime,
  1967. CASE max(cad.actiondefguid)
  1968. when '402837815c1a4fc6015c1a735351122d' then '特殊回访'
  1969. when '402837815c1a4fc6015c1a735350012a' then '其他回访'
  1970. when '402837815c2ff6b5015c3005e7fb0004' then '失效回访'
  1971. when '402837815c2ff6b5015c3005e7fb2222' then '回执超期回访'
  1972. when '402837815c2ff6b5015c3005e7fb0003' then '宽限期50天'
  1973. when '402837815c2ff6b5015c3005e7fb0002' then '宽限期30天'
  1974. when '402837815c1a4fc6015c1a735350012f' then '新契约回访'
  1975. when '402837815c2ff6b5015c3005e7fb0001' then '续期回访'
  1976. end ,
  1977. 'admin',
  1978. sysdate()
  1979. FROM dsj.CC_ACTION_DATA cad,dsj.cc_action_customerinfo cac
  1980. WHERE cac.unioncustomerid = cad.unioncustomerid AND cad.lastdealtime IS NOT null GROUP BY cad.productno,cac.customerno,cad.lastdealtime;
  1981. dbms_output.put_line('partytimeline_hf函数跑批完成!');
  1982. EXCEPTION
  1983. WHEN HIVE_EXCEPTION THEN
  1984. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1985. WHEN Others THEN
  1986. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1987. END;
  1988. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_lp()
  1989. IS
  1990. DECLARE
  1991. p_count int
  1992. BEGIN
  1993. insert into shanglifeecif.partytimeline (
  1994. TripID,
  1995. PolicyNo,
  1996. PartyID,
  1997. name,
  1998. PCertID,
  1999. PRole,
  2000. Scenario,
  2001. SDate,
  2002. describe,
  2003. created_by ,
  2004. created_time
  2005. ) select
  2006. reflect("java.util.UUID", "randomUUID"),
  2007. trim(contno) as contno,
  2008. trim(INSUREDNO) as INSUREDNO,
  2009. trim(INSUREDNAME) as INSUREDNAME,
  2010. trim(idno) as idno,
  2011. '投保人',
  2012. '理赔',
  2013. CASE
  2014. WHEN APPLYDATE IS NOT NULL THEN APPLYDATE
  2015. WHEN APPLYDATE IS NULL THEN RPTDATE
  2016. END AS SDate,
  2017. trim(ACCIDENTTYPE) as ACCIDENTTYPE,
  2018. 'admin',
  2019. sysdate()
  2020. from dsj.insurance_claim WHERE contno IS NOT NULL;
  2021. dbms_output.put_line('partytimeline_lp函数跑批完成!');
  2022. EXCEPTION
  2023. WHEN HIVE_EXCEPTION THEN
  2024. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2025. WHEN Others THEN
  2026. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2027. END;
  2028. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_main()
  2029. IS
  2030. BEGIN
  2031. DELETE FROM shanglifeecif.partytimeline;
  2032. shanglifeecif.partytimeline_tb();
  2033. shanglifeecif.partytimeline_lp();
  2034. shanglifeecif.partytimeline_zx();
  2035. shanglifeecif.partytimeline_bq();
  2036. shanglifeecif.partytimeline_tuibao();
  2037. shanglifeecif.partytimeline_ts();
  2038. shanglifeecif.partytimeline_hf();
  2039. shanglifeecif.partytimeline_xq();
  2040. -- 更新渠道字段
  2041. shanglifeecif.update_partytimeline_add_salecom();
  2042. END;
  2043. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tb() -- 创建主存储过程
  2044. IS
  2045. BEGIN
  2046. insert into shanglifeecif.partytimeline (
  2047. TripID,
  2048. PolicyNo,
  2049. PartyID,
  2050. name,
  2051. PCertID,
  2052. PRole,
  2053. Scenario,
  2054. SDate,
  2055. enddate,
  2056. created_by ,
  2057. created_time
  2058. ) select
  2059. reflect("java.util.UUID", "randomUUID"),
  2060. trim(contno) as contno,
  2061. trim(max(customerno)) as customerno,
  2062. trim(max(name)) as name,
  2063. trim(max(idno)) as idno,
  2064. '投保人',
  2065. '投保',
  2066. trim(max(polapplydate)) as polapplydate,
  2067. trim(max(enddate)) as enddate,
  2068. 'admin',
  2069. sysdate()
  2070. from dsj.policy_information WHERE contno IS NOT NULL GROUP BY contno;
  2071. dbms_output.put_line('partytimeline_tb函数跑批完成!');
  2072. EXCEPTION
  2073. WHEN HIVE_EXCEPTION THEN
  2074. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2075. WHEN Others THEN
  2076. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2077. END;
  2078. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_ts()
  2079. IS
  2080. DECLARE
  2081. p_count int
  2082. BEGIN
  2083. insert into shanglifeecif.partytimeline (
  2084. TripID,
  2085. PolicyNo,
  2086. PartyID,
  2087. name,
  2088. PRole,
  2089. Scenario,
  2090. SDate,
  2091. DESCRIBE,
  2092. created_by ,
  2093. created_time
  2094. ) SELECT
  2095. reflect("java.util.UUID", "randomUUID"),
  2096. max(ac.productnos),
  2097. max(i.customerno),
  2098. max(ac.complaintsname),
  2099. '投保人'||CASE max(ac.complaintsrelation)
  2100. WHEN '201' THEN ''
  2101. WHEN '202' THEN '子女'
  2102. WHEN '203' THEN '配偶'
  2103. WHEN '204' THEN '父母'
  2104. WHEN '205' THEN '其他关系'
  2105. END AS complaintsrelation,
  2106. '投诉',
  2107. ac.inserttime ,
  2108. CASE max(ac.resultclassification)
  2109. WHEN '101' THEN '销售纠纷'
  2110. WHEN '102' THEN '理赔纠纷'
  2111. WHEN '103' THEN '退保纠纷'
  2112. WHEN '104' THEN '承保纠纷'
  2113. WHEN '105' THEN '续收续保纠纷'
  2114. WHEN '106' THEN '保全纠纷'
  2115. WHEN '107' THEN '其他'
  2116. END as resultclassification,
  2117. 'admin',
  2118. sysdate
  2119. FROM dsj.cc_action_complaints ac
  2120. LEFT JOIN dsj.policy_information i ON ac.productnos = i.contno
  2121. WHERE ac.productnos IS NOT NULL AND i.customerno IS NOT NULL
  2122. GROUP BY ac.inserttime ;
  2123. dbms_output.put_line('partytimeline_ts函数跑批完成!');
  2124. EXCEPTION
  2125. WHEN HIVE_EXCEPTION THEN
  2126. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2127. WHEN Others THEN
  2128. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2129. END;
  2130. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tuibao()
  2131. IS
  2132. DECLARE
  2133. p_count int
  2134. BEGIN
  2135. insert into shanglifeecif.partytimeline (
  2136. TripID,
  2137. PolicyNo,
  2138. PartyID,
  2139. name,
  2140. PRole,
  2141. Scenario,
  2142. SDate,
  2143. DESCRIBE,
  2144. created_by ,
  2145. created_time
  2146. ) SELECT
  2147. reflect("java.util.UUID", "randomUUID"),
  2148. trim(t.contno) as contno,
  2149. trim(t.customerno) as customerno,
  2150. trim(t.name) as name,
  2151. trim(t.tbr) as tbr,
  2152. trim(t.tb) as tb,
  2153. trim(t.edorappdate) as edorappdate,
  2154. t.edorreason,
  2155. 'admin',
  2156. sysdate()
  2157. FROM (
  2158. SELECT
  2159. row_number() over(partition by i.contno) rn,
  2160. lm.contno,
  2161. i.customerno,
  2162. i.name,
  2163. '投保人' AS tbr,
  2164. '退保' AS tb,
  2165. to_char(lm.edorappdate,"yyyy-MM-dd") edorappdate,
  2166. CASE lm.edorreasoncode
  2167. WHEN '01' THEN '死亡'
  2168. WHEN '02' THEN '失踪'
  2169. WHEN '03' THEN '离异'
  2170. WHEN '04' THEN '债权转移'
  2171. WHEN '05' THEN '被保险人成年'
  2172. WHEN '06' THEN '其它'
  2173. ELSE '其它'
  2174. END AS edorreason
  2175. FROM dsj.lpedoritem lm,dsj.policy_information i
  2176. where lm.contno = i.contno AND lm.edortype='CT' AND lm.edorstate = 0
  2177. ) t WHERE t.rn = 1;
  2178. dbms_output.put_line('partytimeline_tuibao函数跑批完成!');
  2179. EXCEPTION
  2180. WHEN HIVE_EXCEPTION THEN
  2181. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2182. WHEN Others THEN
  2183. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2184. END;
  2185. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_xq() -- 创建主存储过程
  2186. IS
  2187. BEGIN
  2188. insert into shanglifeecif.partytimeline (
  2189. TripID,
  2190. PolicyNo,
  2191. PartyID,
  2192. name,
  2193. PRole,
  2194. Scenario,
  2195. SDate,
  2196. created_by ,
  2197. created_time
  2198. ) select
  2199. reflect("java.util.UUID", "randomUUID"),
  2200. lp.contno,
  2201. lp.appntno,
  2202. '',
  2203. '投保人',
  2204. '续期',
  2205. to_char(lp.confdate,'yyyy-MM-dd'),
  2206. 'admin',
  2207. sysdate
  2208. FROM dsj.ljapayperson lp WHERE lp.paycount > 1;
  2209. dbms_output.put_line('partytimeline_xq函数跑批完成!');
  2210. EXCEPTION
  2211. WHEN HIVE_EXCEPTION THEN
  2212. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2213. WHEN Others THEN
  2214. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2215. END;
  2216. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_zx()
  2217. IS
  2218. DECLARE
  2219. p_count int
  2220. BEGIN
  2221. insert into shanglifeecif.partytimeline (
  2222. TripID,
  2223. PolicyNo,
  2224. PartyID,
  2225. name,
  2226. PRole,
  2227. Scenario,
  2228. SDate,
  2229. DESCRIBE,
  2230. created_by ,
  2231. created_time
  2232. ) SELECT
  2233. reflect("java.util.UUID", "randomUUID"),
  2234. m.contnos,
  2235. max(i.customerno) customerno,
  2236. max(m.econtactsName) econtactsName,
  2237. '投保人' AS tbr,
  2238. '咨询' AS zx,
  2239. m.starttime,
  2240. max(m.reasonsecondname) reasonsecondname,
  2241. 'admin',
  2242. sysdate()
  2243. from dsj.cc_record_main m
  2244. LEFT JOIN dsj.policy_information i ON m.contnos = i.contno
  2245. WHERE m.contnos IS NOT NULL GROUP BY m.contnos,m.starttime;
  2246. dbms_output.put_line('partytimeline_zx函数跑批完成!');
  2247. EXCEPTION
  2248. WHEN HIVE_EXCEPTION THEN
  2249. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2250. WHEN Others THEN
  2251. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2252. END;
  2253. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics() IS
  2254. DECLARE
  2255. BEGIN
  2256. DELETE FROM shanglifeecif.riskcode_statistics;
  2257. insert into shanglifeecif.riskcode_statistics (
  2258. id,
  2259. kindName,
  2260. khnum,
  2261. tatolprem
  2262. ) --险种大类统计
  2263. SELECT
  2264. row_number()over(),
  2265. temp.kindName,
  2266. temp.khnum,
  2267. temp.tatolprem
  2268. FROM (
  2269. SELECT
  2270. crt.riskcategoriesname AS kindName,
  2271. count(DISTINCT scustid) AS khnum,
  2272. sum(risk) AS tatolprem
  2273. FROM shanglifeecif.customer_risk_temp crt
  2274. WHERE crt.riskcategoriesname IS NOT null
  2275. GROUP BY crt.riskcategoriesname
  2276. ) temp;
  2277. dbms_output.put_line('riskcode_statistics函数跑批完成!');
  2278. EXCEPTION
  2279. WHEN HIVE_EXCEPTION THEN
  2280. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2281. WHEN Others THEN
  2282. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2283. END ;
  2284. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics_channel() IS
  2285. DECLARE
  2286. BEGIN
  2287. DELETE FROM shanglifeecif.riskcode_statistics_channel;
  2288. insert into shanglifeecif.riskcode_statistics_channel (
  2289. id,
  2290. kindName,
  2291. khnum,
  2292. tatolprem,
  2293. salecom,
  2294. salecomname
  2295. ) --险种大类统计
  2296. SELECT
  2297. row_number()over(),
  2298. temp.kindName,
  2299. temp.khnum,
  2300. temp.tatolprem,
  2301. temp.salecom,
  2302. temp.salecomname
  2303. FROM (
  2304. SELECT
  2305. crt.riskcategoriesname AS kindName,
  2306. count(DISTINCT scustid) AS khnum,
  2307. sum(risk) AS tatolprem,
  2308. crt.salecom AS salecom,
  2309. crt.salecomname AS salecomname
  2310. FROM shanglifeecif.customer_risk_temp crt
  2311. WHERE crt.riskcategoriesname IS NOT null
  2312. and crt.salecom is not null
  2313. GROUP BY crt.riskcategoriesname,crt.salecom,crt.salecomname
  2314. ) temp;
  2315. dbms_output.put_line('riskcode_statistics_channel函数跑批完成!');
  2316. EXCEPTION
  2317. WHEN HIVE_EXCEPTION THEN
  2318. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2319. WHEN Others THEN
  2320. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2321. END ;
  2322. CREATE OR REPLACE PROCEDURE shanglifeecif.same_customer() -- 创建主存储过程
  2323. IS
  2324. DECLARE
  2325. scount int
  2326. BEGIN
  2327. DELETE FROM shanglifeecif.samecustomer;
  2328. INSERT INTO shanglifeecif.samecustomer(
  2329. sid,
  2330. scustid,
  2331. name,
  2332. gender,
  2333. birthday,
  2334. idcard,
  2335. Passport,
  2336. Dlicense,
  2337. OtherIdNumber,
  2338. sameType
  2339. )
  2340. SELECT
  2341. reflect("java.util.UUID", "randomUUID"),
  2342. sc1.scustid,
  2343. sc1.name,
  2344. sc1.gender,
  2345. sc1.birthday,
  2346. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2347. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2348. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2349. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2350. 0
  2351. FROM shanglifeecif.customertotaltemp sc1
  2352. WHERE sc1.mobile IS NOT NULL AND EXISTS (SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc1.scustid != sc2.scustid
  2353. AND sc1.name = sc2.name AND sc1.gender = sc2.gender AND sc1.idtype = sc2.idtype AND sc1.mobile = sc2.mobile);
  2354. --三要素疑似相同指姓名、性别、出生日期一致 1
  2355. INSERT INTO shanglifeecif.samecustomer(
  2356. sid,
  2357. scustid,
  2358. name,
  2359. gender,
  2360. birthday,
  2361. idcard,
  2362. Passport,
  2363. Dlicense,
  2364. OtherIdNumber,
  2365. sameType
  2366. )
  2367. SELECT
  2368. reflect("java.util.UUID", "randomUUID"),
  2369. sc1.scustid,
  2370. sc1.name,
  2371. sc1.gender,
  2372. sc1.birthday,
  2373. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2374. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2375. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2376. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2377. 1
  2378. FROM shanglifeecif.customertotaltemp sc1
  2379. 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 )
  2380. ORDER BY sc1.name,sc1.gender,sc1.birthday
  2381. --两要素疑似相同指姓名、证件号码一致 2
  2382. INSERT INTO shanglifeecif.samecustomer(
  2383. sid,
  2384. scustid,
  2385. name,
  2386. gender,
  2387. birthday,
  2388. idcard,
  2389. Passport,
  2390. Dlicense,
  2391. OtherIdNumber,
  2392. sameType
  2393. )
  2394. SELECT
  2395. reflect("java.util.UUID", "randomUUID"),
  2396. sc1.scustid,
  2397. sc1.name,
  2398. sc1.gender,
  2399. sc1.birthday,
  2400. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2401. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2402. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2403. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2404. 2
  2405. FROM shanglifeecif.customertotaltemp sc1
  2406. 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);
  2407. dbms_output.put_line('same_customer函数跑批完成!');
  2408. END;
  2409. CREATE OR REPLACE PROCEDURE shanglifeecif.surrender_protection_temp() IS
  2410. DECLARE
  2411. BEGIN
  2412. DELETE FROM shanglifeecif.surrenderprotectiontemp;
  2413. insert into shanglifeecif.surrenderprotectiontemp(
  2414. tbid,
  2415. scustid,
  2416. tbday
  2417. )SELECT row_number()over(),p.customerno,max(DATEDIFF(t.edorappdate,p.cvalidate)) AS tbday FROM dsj.lpedoritem t,dsj.policy_information p
  2418. WHERE t.contno = p.contno and t.edortype='CT' AND edorstate = 0 GROUP BY p.customerno;
  2419. dbms_output.put_line('surrender_protection_temp函数跑批完成!');
  2420. EXCEPTION
  2421. WHEN HIVE_EXCEPTION THEN
  2422. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2423. WHEN Others THEN
  2424. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2425. END ;
  2426. CREATE OR REPLACE PROCEDURE shanglifeecif.tb_customerinfo() IS
  2427. DECLARE
  2428. BEGIN
  2429. DELETE FROM shanglifeecif.tbcustomerinfo;
  2430. insert into shanglifeecif.tbcustomerinfo(
  2431. tbid,
  2432. scustid,
  2433. contno,
  2434. sdate,
  2435. edate,
  2436. salecom,
  2437. salecomname
  2438. )SELECT row_number()over(),p.customerno,p.contno,p.cvalidate,t.edorappdate ,p.salecom,p.salecomname FROM dsj.lpedoritem t,dsj.policy_information p
  2439. WHERE t.contno = p.contno and t.edortype='CT' AND t.edorstate = 0 ;
  2440. dbms_output.put_line('tb_customerinfo函数跑批完成!');
  2441. EXCEPTION
  2442. WHEN HIVE_EXCEPTION THEN
  2443. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2444. WHEN Others THEN
  2445. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2446. END ;
  2447. CREATE OR REPLACE PROCEDURE shanglifeecif.up_other_customerinfo() -- 创建存储过程
  2448. IS
  2449. BEGIN
  2450. --更新客户类型投保人
  2451. UPDATE shanglifeecif.individual i SET i.custtype = '投保人' WHERE
  2452. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p);
  2453. --更新客户类型投保人、被保人
  2454. UPDATE shanglifeecif.individual i SET i.custtype = '被保人' WHERE
  2455. i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  2456. --更新客户类型投保人、被保人
  2457. UPDATE shanglifeecif.individual i SET i.custtype = '投保人、被保人' WHERE
  2458. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p)
  2459. AND i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  2460. --更新业绩归属
  2461. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  2462. SELECT trim(t.SALECOM) FROM (
  2463. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.customerno,p.SALECOM FROM dsj.policy_information p
  2464. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2465. );
  2466. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  2467. SELECT trim(t.SALECOM) FROM (
  2468. SELECT row_number()OVER(PARTITION BY p.insuredno ORDER BY p.polapplydate asc) rd,p.insuredno,p.SALECOM FROM dsj.policy_information p
  2469. ) t WHERE t.rd = 1 AND si1.scustid = t.insuredno
  2470. );
  2471. --更新职业,民族等信息
  2472. UPDATE shanglifeecif.Individual si1 SET (si1.Occupation,si1.Ethnic,si1.education) = (
  2473. SELECT trim(t.occupationname),trim(t.NATIONALITYNAME),trim(t.degree) FROM (
  2474. 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
  2475. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2476. );
  2477. --更新官微积分
  2478. UPDATE shanglifeecif.individual si SET si.officialCalculus = (
  2479. 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
  2480. );
  2481. dbms_output.put_line('up_other_customerinfo函数跑批完成!');
  2482. EXCEPTION
  2483. WHEN HIVE_EXCEPTION THEN
  2484. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2485. WHEN Others THEN
  2486. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2487. END;
  2488. CREATE OR REPLACE PROCEDURE shanglifeecif.up_t_customers_class_1() -- 创建存储过程
  2489. IS
  2490. BEGIN
  2491. UPDATE shanglifeecif.individual a SET (
  2492. CustClass ,-- 客户等级
  2493. ConValue ,-- 贡献度分
  2494. Awarded3 ,-- 家庭加分2
  2495. Awarded2 ,-- 续期加分
  2496. Awarded1 ,-- 保单加分
  2497. SOValue ,-- 总分值
  2498. EndDate, -- 客户等级失效日期
  2499. Height, --身高
  2500. Weight, --体重
  2501. BMI,
  2502. PIncome, --个人年收入
  2503. FIncome, --家庭年收入
  2504. IncomeSource, --收入来源
  2505. SIStatus, --社保情况
  2506. --Ethnic, --民族情况
  2507. Nation, --国籍
  2508. MaritalStat, --婚姻
  2509. Employer,--工作单位
  2510. --Education,--学历
  2511. Dday, --死亡日期
  2512. regtype, --户籍类型
  2513. ZIPCODE,--邮编
  2514. HPhone,--电话
  2515. PMPhone,--手机
  2516. email, -- 邮箱
  2517. RAL, --联系地址
  2518. sobirth --省份
  2519. ) = (
  2520. select
  2521. b.CLASS_VALUE,--客户等级
  2522. b.CONTRIBUTION_VALUE,--贡献度分
  2523. b.AWARDED3, --家庭加分
  2524. b.AWARDED2, --续期加分
  2525. b.AWARDED1, --保单加分
  2526. b.TOTAL_VALUE, --总分值
  2527. trim(b.END_DATE) as END_DATE, --失效日期
  2528. b.STATURE, --身高
  2529. b.AVOIRDUPOIS,--体重
  2530. b.BMI, --根据身高体重计算
  2531. b.YEARINCOME, --个人年收入
  2532. b.FAMILYYEARSALARY, --家庭年收入
  2533. trim(b.INCOMESOURCE) as INCOMESOURCE, --收入来源
  2534. trim(b.SOCIALINSUFLAG) as SOCIALINSUFLAG, --社保情况
  2535. --trim(b.NATIONALITY) as NATIONALITY, --民族情况
  2536. trim(b.NATIVEPLACE) as NATIVEPLACE, --国籍
  2537. trim(b.MARRIAGE) as MARRIAGE,--婚姻
  2538. trim(b.GRPNAME) as GRPNAME,--工作单位名称
  2539. --trim(b.DEGREE) as DEGREE,--学历
  2540. trim(b.DEATHDATE) as DEATHDATE,--死亡日期
  2541. trim(b.DENTYPE) as DENTYPE,--户籍类型
  2542. trim(b.ZIPCODE) as ZIPCODE,--邮编
  2543. trim(b.PHONE) as PHONE,--电话
  2544. trim(b.MOBILE) as MOBILE,--手机
  2545. trim(b.EMAIL) as EMAIL,--邮箱
  2546. regexp_replace(trim(b.POSTALADDRESS),'[0-90-9]','*') as POSTALADDRESS, --联系地址
  2547. regexp_extract(b.POSTALADDRESS,'(.*?)省|(.*?)市',0) -- 省份
  2548. from dsj.t_customer_class b
  2549. where b.CUSTOMER_ID = a.scustid
  2550. ) WHERE 1=1 ;
  2551. dbms_output.put_line('up_t_customers_class_1函数跑批完成!');
  2552. EXCEPTION
  2553. WHEN HIVE_EXCEPTION THEN
  2554. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2555. WHEN Others THEN
  2556. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2557. END;
  2558. CREATE OR REPLACE PROCEDURE shanglifeecif.update_customerno_salecom_relation_labels() IS
  2559. -- 标签值分渠道计算,并将计算结果存入shanglifeecif.customerno_salecom_relation表
  2560. -- 该表不存储跟渠道的标签值(也就是”上海人寿“渠道),只存储下面子渠道的标签值
  2561. BEGIN
  2562. -- 1. 是否持有寿险有效保单 label24
  2563. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label24 = '持有寿险有效保单' WHERE exists (
  2564. SELECT p.customerno FROM dsj.policy_information p,dsj.riskkind l WHERE si1.scustid = p.customerno AND si1.salecom = p.salecom AND p.riskcode = l.riskcode AND p.appflag = '有效' AND (l.kindtype = '新型寿险' OR l.kindtype = '人寿保险')
  2565. );
  2566. -- 2. 保单件数区间 label25 参考bdnum_distribution.sql : 4行
  2567. -- 在 shanglifeecif.bdnum_distribution() 中处理
  2568. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label25 = (
  2569. select
  2570. CASE
  2571. WHEN t.n = 0 THEN '无保单'
  2572. WHEN t.n = 1 THEN '1件保单'
  2573. WHEN t.n = 2 THEN '2件保单'
  2574. WHEN t.n between 3 and 5 THEN '3-5件保单'
  2575. WHEN t.n between 6 and 10 THEN '6-10件保单'
  2576. WHEN t.n between 11 and 20 THEN '11-20件保单'
  2577. WHEN t.n between 21 and 50 THEN '21-50件保单'
  2578. WHEN t.n > 50 THEN '50件保单以上'
  2579. END
  2580. from (
  2581. SELECT customerno, salecom, count(1) as n FROM dsj.policy_information p WHERE appflag IS NOT NULL group by customerno, salecom
  2582. ) t
  2583. where
  2584. si1.scustid = t.customerno
  2585. and si1.salecom = t.salecom
  2586. );
  2587. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET (
  2588. -- si1.NOVPolicy -- 有效保单数
  2589. -- , si1.noivpolicy -- 无效保单数
  2590. -- , si1.Label25 --总保单数
  2591. -- ) = (
  2592. -- SELECT
  2593. -- valid_num
  2594. -- , invalid_num
  2595. -- , total
  2596. -- FROM (
  2597. -- SELECT
  2598. -- customerno
  2599. -- , salecom
  2600. -- , sum(CASE WHEN appflag = '有效' THEN 1 ELSE 0 end) AS valid_num -- 有效保单数
  2601. -- , sum(CASE WHEN appflag <> '有效' THEN 1 ELSE 0 end) AS invalid_num -- 无效保单数
  2602. -- , count(1) AS total --总保单数
  2603. -- FROM (
  2604. -- SELECT customerno, salecom, contno, appflag
  2605. -- FROM dsj.policy_information p WHERE appflag IS NOT NULL GROUP BY customerno, salecom, contno, appflag
  2606. -- ) t
  2607. -- GROUP BY customerno, salecom
  2608. -- ) s
  2609. -- WHERE si1.scustid = s.customerno AND si1.salecom = s.salecom
  2610. -- )
  2611. -- WHERE 1 = 1;
  2612. -- 3. 是否贷款 label26
  2613. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label26 = '有保单贷款' WHERE exists (
  2614. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  2615. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  2616. )
  2617. );
  2618. -- 4. 是否有极短意保单 label27
  2619. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  2620. -- SELECT
  2621. -- CASE
  2622. -- WHEN t.cnt > 0 AND t.cnt = t.tnum THEN '仅极短意外险'
  2623. -- WHEN t.cnt > 0 AND t.cnt <> t.tnum THEN '有极短意外险'
  2624. -- END
  2625. -- FROM (
  2626. -- SELECT
  2627. -- po.customerno
  2628. -- , po.salecom
  2629. -- , SUM(
  2630. -- CASE
  2631. -- WHEN
  2632. -- po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2633. -- AND po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2634. -- THEN 1
  2635. -- ELSE 0
  2636. -- END
  2637. -- ) AS cnt
  2638. -- , COUNT(1) AS tnum
  2639. -- FROM dsj.policy_information po
  2640. -- WHERE
  2641. -- po.riskperiod='短期险'
  2642. -- GROUP BY customerno, salecom
  2643. -- ) t
  2644. -- WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2645. -- );
  2646. --------------
  2647. -- 4. 是否有极短意保单 label27(方式二)
  2648. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  2649. SELECT
  2650. CASE
  2651. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  2652. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  2653. END
  2654. FROM (
  2655. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2656. SELECT
  2657. count(1) cnt
  2658. , po.customerno
  2659. , po.salecom
  2660. FROM
  2661. dsj.policy_information po
  2662. where
  2663. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2664. and
  2665. po.riskperiod='短期险'
  2666. and
  2667. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2668. GROUP BY
  2669. po.customerno, po.salecom
  2670. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and p.salecom = t.salecom GROUP BY p.customerno, p.salecom
  2671. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2672. );
  2673. -- 5. 是否有趸交保单 Label29
  2674. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label29 = '有趸交保单' WHERE exists (
  2675. SELECT p.customerno FROM dsj.policy_information p, dsj.PREMIUM_LIST l
  2676. WHERE p.contno = l.contno and p.salecom = l.salecom and p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.payintv = '趸缴' and p.riskperiod = '长期险' AND l.PAYMENT_PERIOD LIKE '%一次交清%'
  2677. );
  2678. -- 6. 是否给本人投保 Label30
  2679. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label30 = (
  2680. SELECT
  2681. CASE
  2682. WHEN tt.bnum = 0 THEN '本人未投保'
  2683. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  2684. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  2685. END
  2686. FROM (
  2687. SELECT t.customerno, t.salecom, MAX(t.bnum) bnum, count(*) as tnum FROM (
  2688. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno, p.salecom
  2689. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2690. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2691. );
  2692. -- 7. 是否给父母投保 Label31
  2693. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label31 = (
  2694. SELECT
  2695. CASE
  2696. WHEN tt.bnum = 0 THEN '父母未投保'
  2697. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  2698. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  2699. END
  2700. FROM (
  2701. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2702. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  2703. GROUP BY p.customerno, p.salecom
  2704. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2705. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2706. );
  2707. -- 8. 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  2708. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label32 = (
  2709. SELECT
  2710. CASE
  2711. WHEN tt.bnum = 0 THEN '子女未投保'
  2712. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  2713. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  2714. END
  2715. FROM (
  2716. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2717. SELECT nvl(count(*),0) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday < p.insuredbirthday GROUP BY p.customerno, p.salecom
  2718. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2719. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2720. );
  2721. -- 9. 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  2722. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label33 = (
  2723. SELECT
  2724. CASE
  2725. WHEN tt.bnum = 0 THEN '配偶未投保'
  2726. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  2727. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  2728. END
  2729. FROM (
  2730. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2731. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno, p.salecom
  2732. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2733. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2734. );
  2735. -- 10. 是否仅有1年期短险保单 Label43
  2736. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label43 = (
  2737. SELECT
  2738. CASE
  2739. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  2740. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  2741. END
  2742. FROM (
  2743. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2744. SELECT
  2745. count(1) cnt,
  2746. po.customerno,
  2747. po.salecom
  2748. FROM
  2749. dsj.policy_information po
  2750. where
  2751. po.SECURITY in('1年','6月','180天')
  2752. and
  2753. po.riskperiod='短期险'
  2754. and
  2755. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2756. GROUP BY
  2757. po.customerno, po.salecom
  2758. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and t.salecom = p.salecom GROUP BY p.customerno, p.salecom
  2759. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2760. );
  2761. -- 11. 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  2762. -- SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' and state = '1')
  2763. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label44 = '有失效保单' WHERE exists (
  2764. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' )
  2765. );
  2766. -- 12. 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  2767. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label45 = '有缴费期满长险保单' WHERE exists (
  2768. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  2769. );
  2770. -- 13. 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  2771. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label46 = '有续期缴费保单' WHERE exists (
  2772. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.contno IN (
  2773. select otherno from dsj.ljspay where othernotype = '2'
  2774. )
  2775. );
  2776. -- 14. 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  2777. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label47 = '有责任期满的保单' WHERE exists (
  2778. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  2779. );
  2780. -- 15. 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  2781. --第一步
  2782. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  2783. SELECT fadate FROM (
  2784. SELECT p.customerno, p.salecom, min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno, p.salecom
  2785. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2786. );
  2787. -- 第二步
  2788. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  2789. SELECT fadate FROM (
  2790. SELECT p.insuredno, p.salecom, min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno, p.salecom
  2791. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  2792. );
  2793. -- 第三步
  2794. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  2795. -- 16. 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  2796. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  2797. SELECT fadate FROM (
  2798. SELECT p.customerno, p.salecom, max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno, p.salecom
  2799. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2800. );
  2801. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  2802. SELECT fadate FROM (
  2803. SELECT p.insuredno, p.salecom, max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno, p.salecom
  2804. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  2805. );
  2806. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  2807. /*
  2808. * 二期分渠道计算标签值时这两个标签只有根渠道显示(也就是”上海人寿“渠道),其他渠道不展示
  2809. -- 17. 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  2810. -- 原始逻辑
  2811. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  2812. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  2813. WHERE p.salecomname IS NOT null
  2814. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2815. -- 18. 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  2816. -- 原始逻辑
  2817. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  2818. 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
  2819. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2820. */
  2821. -- 19. 最近保单状态 Label54
  2822. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label54 = (
  2823. SELECT '最近保单状态'||trim(t.appflag) FROM (
  2824. SELECT row_number()OVER(PARTITION BY p.customerno, p.salecom ORDER BY p.polapplydate DESC) rd,p.customerno, p.salecom,p.appflag FROM dsj.policy_information p
  2825. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno AND si1.salecom = t.salecom
  2826. );
  2827. -- 20. 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  2828. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label55 = (
  2829. SELECT '客户最近一次办理'||t.edorname FROM (
  2830. SELECT
  2831. row_number() over(partition by p.customerno, p.salecom ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  2832. l.edortype,
  2833. l.contno,
  2834. p.customerno,
  2835. p.salecom,
  2836. l.edorappdate,
  2837. l.edorstate,
  2838. lm.edorcode,
  2839. lm.edorname
  2840. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  2841. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  2842. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  2843. ) WHERE 1 = 1;
  2844. -- 21. 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  2845. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label56 = '有退保保单' WHERE exists (
  2846. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  2847. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  2848. )
  2849. );
  2850. -- 22. 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  2851. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label57 = (
  2852. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  2853. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE, p.salecom
  2854. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  2855. WHERE c.contno = p.contno
  2856. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2857. );
  2858. -- 23. 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  2859. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label58 = (
  2860. SELECT "最近一次出险类型" || t.lloccurreason FROM (
  2861. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.lloccurreason, p.salecom
  2862. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  2863. WHERE c.contno = p.contno
  2864. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2865. );
  2866. -- 24. 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  2867. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label59 = (
  2868. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  2869. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE, p.salecom
  2870. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p WHERE c.contno = p.contno
  2871. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2872. );
  2873. -- 25. 是否有满期给付保单 Label61 有满期给付保单
  2874. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label61 = '有满期给付保单' WHERE exists (
  2875. SELECT p.customerno FROM dsj.policy_information p WHERE si1.scustid = p.customerno and si1.salecom = p.salecom and p.contno IN (
  2876. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  2877. )
  2878. );
  2879. -- 26. 是否有生存金给付的保单 Label62 有生存金给付保单 无
  2880. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label62 = '有生存金给付的保单' WHERE exists (
  2881. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.contno IN (
  2882. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  2883. )
  2884. );
  2885. -- 27. 是否有红利可领取的保单 Label64 有红利可领取保单 无
  2886. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label64 = '红利可领取的保单' WHERE exists (
  2887. SELECT p.customerno FROM dsj.policy_information p, dsj.lmriskapp l
  2888. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1
  2889. );
  2890. -- 28. 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  2891. /*
  2892. 一张保单对应一个保单号 contno,但表里会有重复保单号,因为一个保单会包含多个险种 riskcode,包含了几个险种就会有几条重复记录。
  2893. 如果客户只购买了一张保单,不管保单中包含多少个险种,只要包含“新型寿险”或“人寿保险”险种就认为是一单寿险客户
  2894. */
  2895. /*
  2896. -- 旧方法,性能低
  2897. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (SELECT temp.customerno FROM (
  2898. SELECT pi.customerno, pi.salecom, count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  2899. SELECT count(DISTINCT p.contno) AS pnum, p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  2900. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  2901. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno, p.salecom
  2902. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  2903. GROUP BY pi.customerno, pi.salecom
  2904. )temp WHERE temp.tnum = temp.pnum AND tnum = 1 and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  2905. */
  2906. ----------- 方法二
  2907. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (
  2908. SELECT
  2909. customerno
  2910. , salecom
  2911. , count(DISTINCT contno) AS c -- 保单号去重后统计该客户总共有多少保单
  2912. , sum(
  2913. CASE
  2914. WHEN b.kindtype IN ('人寿保险', '新型寿险') THEN 1
  2915. ELSE 0
  2916. END
  2917. ) AS s -- 统计寿险有几条记录
  2918. FROM dsj.POLICY_INFORMATION p, dsj.riskkind b
  2919. WHERE p.riskcode = b.riskcode AND p.customerno = si1.scustid AND p.salecom = si1.salecom
  2920. GROUP BY customerno, salecom
  2921. HAVING c = 1 AND s > 0 -- 筛选只有一个保单且包含寿险的客户
  2922. );
  2923. -- 29. 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  2924. /*
  2925. -- 旧方法,性能低
  2926. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  2927. SELECT temp.customerno FROM (
  2928. SELECT count(*) AS tnum, t.customerno, t.salecom, max(t.pnum) AS pnum FROM (
  2929. SELECT p.customerno, p.salecom, count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno, p.salecom
  2930. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  2931. GROUP BY t.customerno, t.salecom
  2932. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2933. );
  2934. */
  2935. --------------- 方法二
  2936. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  2937. SELECT
  2938. p.customerno
  2939. , p.salecom
  2940. -- , count(1) AS c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  2941. , sum(
  2942. case
  2943. when p.paycount = p.payendyear then 1
  2944. else 0
  2945. end
  2946. ) AS s
  2947. FROM dsj.policy_information p
  2948. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom
  2949. GROUP BY p.customerno, p.salecom
  2950. HAVING count(1) = s
  2951. );
  2952. -- 30. 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  2953. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label68 = '持有有效保单' WHERE exists (
  2954. SELECT salecom FROM dsj.POLICY_INFORMATION p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom
  2955. );
  2956. -- 31. 父母生日提醒 Label78 父亲生日临近 | 母亲生日临近 客户父母生日-当前日期<=5
  2957. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label78 = (
  2958. SELECT
  2959. case max(p.insuredsex)
  2960. when '0' then '父亲生日临近'
  2961. when '1' then '母亲生日临近'
  2962. end as s
  2963. from dsj.POLICY_INFORMATION p
  2964. where p.customerno = si1.scustid and p.salecom = si1.salecom
  2965. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday > p.insuredbirthday -- 父母关系,并且投保人 > 被保人(也就是晚辈给长辈买保险,被保人是长辈)
  2966. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  2967. );
  2968. -- 32. 子女生日提醒 Label79 儿子生日临近 | 女儿生日临近 客户子女生日-当前日期<=5
  2969. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label79 = (
  2970. SELECT
  2971. case max(p.insuredsex)
  2972. when '0' then '儿子生日临近'
  2973. when '1' then '女儿生日临近'
  2974. end as s
  2975. from dsj.POLICY_INFORMATION p
  2976. where p.customerno = si1.scustid and p.salecom = si1.salecom
  2977. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday < p.insuredbirthday -- 父母关系,并且投保人 < 被保人(也就是长辈给晚辈买保险,被保人是晚辈)
  2978. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  2979. );
  2980. -- 33. 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2981. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label81 = '近期咨询过理赔' WHERE exists (
  2982. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.customerno = si1.scustid and dp.salecom = si1.salecom and dp.contno IN (
  2983. SELECT rm.contnos FROM dsj.cc_record_main rm
  2984. WHERE rm.reasonsecondname LIKE '%理赔%' and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2985. );
  2986. -- 34. 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2987. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label88 = '续期临期未缴费' WHERE exists (
  2988. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2989. 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
  2990. and p.customerno = si1.scustid and p.salecom = si1.salecom
  2991. );
  2992. -- 35. 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2993. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label89 = '续期到期未缴费' WHERE exists (
  2994. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2995. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2996. and p.customerno = si1.scustid and p.salecom = si1.salecom
  2997. );
  2998. -- 36. 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2999. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE exists (SELECT temp.customerno FROM (
  3000. SELECT count(*) AS tnum,max(t.customerno) AS customerno, max(t.salecom) as salecom,max(t.pnum) AS pnum FROM (
  3001. SELECT p.customerno, p.salecom,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno, p.salecom
  3002. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  3003. GROUP BY pi.customerno, pi.salecom
  3004. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  3005. /*
  3006. -- 方法二(性能反而慢,原因待查)
  3007. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE EXISTS (
  3008. SELECT
  3009. p.customerno
  3010. , p.salecom
  3011. -- , count(1) as c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  3012. , sum(
  3013. case
  3014. when p.appflag <> '有效' then 1
  3015. else 0
  3016. end
  3017. ) as s
  3018. from dsj.policy_information p
  3019. where p.customerno = si1.scustid and p.salecom = si1.salecom
  3020. group by p.customerno, p.salecom
  3021. having count(1) = s
  3022. );
  3023. */
  3024. -- 37. 失效原因 Label92
  3025. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label92 = (
  3026. SELECT '有'||t.terminatestate||'保单' FROM (
  3027. SELECT row_number()over(partition by p.customerno, p.salecom order by p.polapplydate desc) rn,p.customerno, p.salecom,p.terminatestate FROM dsj.policy_information p
  3028. WHERE p.appflag <> '有效'
  3029. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  3030. );
  3031. -- 38. 终止原因 Label94
  3032. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label94 = (
  3033. SELECT '有'||t.terminatestate||'保单' FROM (
  3034. SELECT row_number()over(partition by p.customerno, p.salecom order by p.polapplydate desc) rn,p.customerno, p.salecom,p.terminatestate FROM dsj.policy_information p
  3035. WHERE p.appflag = '终止'
  3036. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  3037. );
  3038. -- 39. 上年续期交费情况 Label95
  3039. -- 通过contno与dsj.policy_information表关联会有关联不上的数据,关联不上的数据不做处理
  3040. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label95 = (
  3041. SELECT
  3042. CASE
  3043. WHEN t.dnum=0 THEN '上一年如期缴费'
  3044. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  3045. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  3046. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  3047. END
  3048. FROM (
  3049. SELECT
  3050. 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, p.salecom
  3051. FROM dsj.ljapayperson l, dsj.policy_information p WHERE p.contno = l.contno and l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  3052. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid and t.salecom = si1.salecom
  3053. );
  3054. -- 40. 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  3055. -- 二期只计算这3个渠道
  3056. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  3057. --02个险渠道 期缴 大于20000以上
  3058. --03银保渠道 期缴 大于50000以上
  3059. --06健康险 期缴 大于 20000以上
  3060. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label107 = '高金额' WHERE exists (
  3061. SELECT p.customerno FROM dsj.policy_information p WHERE
  3062. p.appflag = '有效' AND p.payintv = '期缴' and
  3063. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000))
  3064. and p.customerno = si1.scustid and p.salecom = si1.salecom
  3065. );
  3066. -- 41. 最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  3067. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label108 = '最近理赔结案' WHERE exists (
  3068. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  3069. WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  3070. and p.contno = c.contno and c.insuredno = si1.scustid and p.salecom = si1.salecom
  3071. );
  3072. -- 42. 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  3073. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label109 = '理赔报案追踪' WHERE exists (
  3074. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3075. SELECT c.CONTNO FROM dsj.insurance_claim c WHERE c.LLCLAIMSTATE = '报案' AND DATEDIFF(sysdate(), c.RPTDATE) <30
  3076. )
  3077. );
  3078. -- 43. 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  3079. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label110 = '理赔处理中' WHERE exists (
  3080. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3081. SELECT c.contno FROM dsj.INSURANCE_CLAIM c WHERE c.llclaimstate = '受理' OR c.llclaimstate = '立案'
  3082. )
  3083. );
  3084. -- 44. 最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  3085. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label111 = '最近保全完成' WHERE exists (
  3086. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3087. 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'
  3088. )
  3089. );
  3090. -- 45. 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  3091. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label113 = '生存金未领' WHERE exists (
  3092. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3093. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  3094. )
  3095. );
  3096. -- 46. 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  3097. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label115 = '红利垫缴还款' WHERE exists (
  3098. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3099. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  3100. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  3101. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  3102. )
  3103. );
  3104. -- 47. 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  3105. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label117 = '宽限期' WHERE exists (
  3106. SELECT p.customerno FROM dsj.policy_information p WHERE
  3107. p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  3108. 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
  3109. and p.customerno = si1.scustid and p.salecom = si1.salecom
  3110. );
  3111. --48. 重点银行 Label120 重点银行
  3112. -- 二期只计算银保渠道(03)
  3113. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label120 = '重点银行' WHERE exists (
  3114. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and si1.salecom = '03' and p.AGENTCOM LIKE '%招商银行%'
  3115. );
  3116. dbms_output.put_line('update_customerno_salecom_relation_labels 函数跑批完成!');
  3117. EXCEPTION
  3118. WHEN HIVE_EXCEPTION THEN
  3119. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3120. WHEN Others THEN
  3121. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3122. END;
  3123. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuranceclaimthread_add_salecom()
  3124. IS
  3125. BEGIN
  3126. UPDATE shanglifeecif.insuranceclaimthread insd
  3127. SET (
  3128. insd.SALECOM,
  3129. insd.salecomname
  3130. )
  3131. =(SELECT t.salecom , t.salecomname FROM
  3132. (
  3133. SELECT
  3134. contno, salecom , salecomname
  3135. FROM dsj.policy_information t
  3136. GROUP BY contno , salecom , salecomname
  3137. ) t WHERE t.contno = insd.policyno
  3138. -- AND t.contno in('2019012400157198','2019071600119318')
  3139. )
  3140. dbms_output.put_line('update_insuranceclaimthread add saleCome 函数跑批完成!');
  3141. EXCEPTION
  3142. WHEN HIVE_EXCEPTION THEN
  3143. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3144. WHEN Others THEN
  3145. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3146. END;
  3147. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuredinfo()
  3148. IS
  3149. BEGIN
  3150. --更新被保人信息
  3151. UPDATE shanglifeecif.individual a SET (
  3152. ZIPCODE,--邮编
  3153. HPhone,--电话
  3154. PMPhone,--手机
  3155. email, -- 邮箱
  3156. RAL, --联系地址
  3157. sobirth --省份
  3158. ) = (
  3159. SELECT
  3160. t.zipcode,
  3161. t.phone,
  3162. t.mobile,
  3163. t.email,
  3164. regexp_replace(trim(t.address),'[0-9]','*') address,
  3165. regexp_extract(t.address,'(.*?)省|(.*?)市',0) province
  3166. FROM (
  3167. SELECT
  3168. row_number()OVER(PARTITION BY ls.customerno ORDER BY ls.modifydate desc) rn,
  3169. ls.customerno,--客户号
  3170. CASE
  3171. WHEN ls.postaladdress IS NULL
  3172. THEN
  3173. CASE WHEN ls.homeaddress IS NULL THEN ls.companyaddress ELSE ls.homeaddress END
  3174. ELSE ls.postaladdress
  3175. END AS address,
  3176. ls.phone,
  3177. ls.zipcode,--邮编
  3178. CASE WHEN ls.email IS NULL THEN ls.email2 ELSE ls.email END AS email,
  3179. CASE WHEN ls.mobile IS NULL THEN ls.mobile2 ELSE ls.mobile END AS mobile
  3180. FROM dsj.lcaddress ls
  3181. ) t where t.rn = 1 AND t.customerno = a.scustid
  3182. ) WHERE a.custtype = '被保人';
  3183. UPDATE shanglifeecif.individual a SET (
  3184. Height, --身高
  3185. Weight, --体重
  3186. BMI,
  3187. PIncome, --个人年收入
  3188. Ethnic, --民族情况
  3189. Nation, --国籍
  3190. MaritalStat, --婚姻
  3191. Education,--学历
  3192. SIStatus,--社保
  3193. IncomeSource,--收入来源
  3194. Occupation,--职业
  3195. regtype --户籍类型
  3196. ) = (
  3197. SELECT
  3198. t.stature,--身高
  3199. t.avoirdupois,--体重
  3200. t.bmi,
  3201. t.yearincome,
  3202. t.nationality,--民族
  3203. t.nativeplace,--国籍
  3204. t.marriage, --婚姻状况
  3205. t.degree, --学历
  3206. t.socialinsuflag,--社保
  3207. t.incomesource,--收入来源
  3208. t.occupationcode,--职业
  3209. t.dentype
  3210. FROM (
  3211. SELECT
  3212. row_number()OVER(PARTITION BY ld.insuredno ORDER BY ld.modifydate desc) rn,
  3213. ld.insuredno,--被保人客户号
  3214. ld.appntno,--投保人客户号
  3215. ld.name,--被保人名称
  3216. ld.sex,--被保人性别
  3217. ld.birthday,--被保人出生日期
  3218. ld.idtype,--证件类型
  3219. ld.idno,--证件号码
  3220. ld.marriage,--婚姻状况
  3221. ld.occupationcode,--职业
  3222. ld.nativeplace,--国籍
  3223. ld.nationality,--民族
  3224. ld.stature,--身高
  3225. ld.avoirdupois,--体重
  3226. round((ld.avoirdupois/POWER((ld.stature/100),2)),2) bmi,
  3227. ld.degree,--学历
  3228. ld.dentype,--居民类型
  3229. ld.socialinsuflag,--社保情况
  3230. ld.incomesource,--收入来源
  3231. ld.yearincome --年收入
  3232. FROM dsj.lcinsured2 ld
  3233. ) t WHERE t.rn = 1 AND t.insuredno = a.scustid
  3234. ) WHERE a.custtype = '被保人';
  3235. dbms_output.put_line('update_insuredinfo函数跑批完成!');
  3236. EXCEPTION
  3237. WHEN HIVE_EXCEPTION THEN
  3238. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3239. WHEN Others THEN
  3240. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3241. END;
  3242. CREATE OR REPLACE PROCEDURE shanglifeecif.update_partytimeline_add_salecom()
  3243. IS
  3244. BEGIN
  3245. UPDATE shanglifeecif.partytimeline pt SET (pt.salecom,pt.salecomname) =
  3246. (
  3247. SELECT t.salecom, t.salecomname FROM
  3248. (
  3249. SELECT
  3250. contno, salecom, salecomname
  3251. FROM dsj.policy_information t
  3252. GROUP BY contno, salecom, salecomname
  3253. ) t WHERE t.contno = pt.policyno
  3254. )
  3255. dbms_output.put_line('update_partytimeline_add_salecom 函数跑批完成!');
  3256. EXCEPTION
  3257. WHEN HIVE_EXCEPTION THEN
  3258. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3259. WHEN Others THEN
  3260. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3261. END;
  3262. CREATE OR REPLACE PROCEDURE shanglifeecif.update_risk_categories() -- 创建主存储过程
  3263. IS
  3264. BEGIN
  3265. --更新险种大类
  3266. UPDATE shanglifeecif.insurancearrangement a SET (
  3267. risk_categories_name
  3268. ) = (
  3269. select
  3270. kindtype
  3271. from dsj.riskkind b WHERE a.productid = b.riskcode
  3272. ) WHERE 1=1;
  3273. dbms_output.put_line('update_risk_categories函数跑批完成!');
  3274. EXCEPTION
  3275. WHEN HIVE_EXCEPTION THEN
  3276. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3277. WHEN Others THEN
  3278. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3279. END;
  3280. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  3281. DECLARE
  3282. BEGIN
  3283. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  3284. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  3285. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  3286. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  3287. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  3288. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  3289. --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 '老年'" 儿童、少年、青年、中年、老年
  3290. --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);
  3291. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  3292. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  3293. --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离异
  3294. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  3295. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  3296. --case si1.maritalStat
  3297. --when 1 then '未婚'
  3298. --when 2 then '已婚'
  3299. --when 3 then '丧偶'
  3300. --when 4 then '离异'
  3301. --else NULL END
  3302. --) WHERE 1 = 1;
  3303. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  3304. --else null" 无子女、1孩、2孩及以上
  3305. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  3306. SELECT nvl(t.cnum,0) FROM (
  3307. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  3308. WHERE si.rstype = '子女' GROUP BY si.indid1
  3309. ) t WHERE t.indid1 = si1.scustid
  3310. ) ;
  3311. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  3312. case
  3313. when si1.COChild=0 then '无子女'
  3314. when si1.COChild=1 then '1孩'
  3315. when si1.COChild>=2 then '2孩及以上'
  3316. else null END
  3317. ) WHERE si1.cochild is not null;
  3318. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  3319. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  3320. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  3321. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  3322. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  3323. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  3324. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  3325. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  3326. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  3327. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  3328. --根据数据判断单位应该是万元,这里都除以10000做判断
  3329. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  3330. CASE
  3331. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  3332. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  3333. WHEN si1.pincome > 100 THEN '富人'
  3334. else null END
  3335. ) where 1 = 1;
  3336. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  3337. --else null" 无车,1辆车,2辆车及以上
  3338. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  3339. CASE
  3340. WHEN si1.COVehicle ==0 THEN '无车'
  3341. WHEN si1.COVehicle == 1 THEN '1辆车'
  3342. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  3343. ELSE NULL END
  3344. ) where 1 = 1;
  3345. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  3346. --else null" 无房,1套房,2套房及以上
  3347. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  3348. CASE
  3349. WHEN si1.CORP ==0 THEN '无房'
  3350. WHEN si1.CORP == 1 THEN '1套房'
  3351. WHEN si1.CORP > 1 THEN '2套房以上'
  3352. else null END
  3353. ) where 1 = 1;
  3354. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  3355. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  3356. (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 = '人寿保险'));
  3357. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  3358. --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件'
  3359. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  3360. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  3361. --第一步 更新 Individual.NOVPolicy 有效记录数
  3362. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  3363. --SELECT temp.customerno,count(*) AS cnum FROM (
  3364. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  3365. --) temp GROUP BY temp.customerno
  3366. --) t WHERE t.customerno = si1.scustid);
  3367. --第二步 更新 Individual.NOIVPolicy 无效记录数
  3368. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  3369. --SELECT temp.customerno,count(*) AS cnum FROM (
  3370. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  3371. --) temp GROUP BY temp.customerno
  3372. --) t WHERE t.customerno = si1.scustid);
  3373. --第三步
  3374. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  3375. --CASE
  3376. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  3377. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  3378. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  3379. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  3380. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  3381. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  3382. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  3383. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  3384. --END ) where 1 = 1;
  3385. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  3386. --CASE
  3387. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  3388. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  3389. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  3390. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  3391. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  3392. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  3393. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  3394. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  3395. --END
  3396. --) where 1 = 1;
  3397. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  3398. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  3399. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  3400. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  3401. )
  3402. );
  3403. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  3404. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  3405. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  3406. SELECT
  3407. CASE
  3408. WHEN temp.cnt >0 THEN
  3409. '有极短意外险'
  3410. END
  3411. FROM
  3412. (
  3413. SELECT
  3414. count(1) cnt,
  3415. policy.customerno
  3416. FROM
  3417. policy_information policy
  3418. where
  3419. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  3420. and
  3421. policy.riskperiod='短期险'
  3422. and
  3423. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3424. GROUP BY
  3425. policy.customerno
  3426. ) temp
  3427. WHERE temp.customerno = si1.scustid
  3428. );*/
  3429. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  3430. SELECT
  3431. CASE
  3432. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  3433. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  3434. END
  3435. FROM (
  3436. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  3437. SELECT
  3438. count(1) cnt,
  3439. po.customerno
  3440. FROM
  3441. dsj.policy_information po
  3442. where
  3443. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  3444. and
  3445. po.riskperiod='短期险'
  3446. and
  3447. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3448. GROUP BY
  3449. po.customerno
  3450. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  3451. ) temp where temp.customerno = si1.scustid
  3452. );
  3453. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  3454. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  3455. 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 '%一次交清%')
  3456. );
  3457. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  3458. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  3459. SELECT
  3460. CASE
  3461. WHEN tt.bnum = 0 THEN '本人未投保'
  3462. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  3463. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  3464. END
  3465. FROM (
  3466. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3467. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno
  3468. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3469. ) tt WHERE tt.customerno = si1.scustid
  3470. );
  3471. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  3472. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  3473. SELECT
  3474. CASE
  3475. WHEN tt.bnum = 0 THEN '父母未投保'
  3476. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  3477. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  3478. END
  3479. FROM (
  3480. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3481. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  3482. GROUP BY p.customerno
  3483. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3484. ) tt WHERE tt.customerno = si1.scustid
  3485. );
  3486. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  3487. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  3488. SELECT
  3489. CASE
  3490. WHEN tt.bnum = 0 THEN '子女未投保'
  3491. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  3492. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  3493. END
  3494. FROM (
  3495. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3496. 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
  3497. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3498. ) tt WHERE tt.customerno = si1.scustid
  3499. );
  3500. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  3501. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  3502. SELECT
  3503. CASE
  3504. WHEN tt.bnum = 0 THEN '配偶未投保'
  3505. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  3506. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  3507. END
  3508. FROM (
  3509. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3510. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno
  3511. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3512. ) tt WHERE tt.customerno = si1.scustid
  3513. );
  3514. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  3515. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  3516. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  3517. SELECT
  3518. CASE
  3519. WHEN temp.cnt >0 THEN
  3520. '有1年期短险保单'
  3521. END
  3522. FROM
  3523. (
  3524. SELECT
  3525. count(1) cnt,
  3526. policy.customerno
  3527. FROM
  3528. policy_information policy
  3529. where
  3530. policy.SECURITY in('1年','6月','180天')
  3531. and
  3532. policy.riskperiod='短期险'
  3533. and
  3534. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3535. GROUP BY
  3536. policy.customerno
  3537. ) temp
  3538. WHERE
  3539. temp.customerno = si1.scustid
  3540. );*/
  3541. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  3542. SELECT
  3543. CASE
  3544. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  3545. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  3546. END
  3547. FROM (
  3548. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  3549. SELECT
  3550. count(1) cnt,
  3551. po.customerno
  3552. FROM
  3553. dsj.policy_information po
  3554. where
  3555. po.SECURITY in('1年','6月','180天')
  3556. and
  3557. po.riskperiod='短期险'
  3558. and
  3559. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3560. GROUP BY
  3561. po.customerno
  3562. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  3563. ) temp where temp.customerno = si1.scustid
  3564. );
  3565. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  3566. -- 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')
  3567. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  3568. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' )
  3569. );
  3570. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  3571. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  3572. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  3573. );
  3574. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  3575. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  3576. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  3577. select otherno from dsj.ljspay where othernotype = '2'
  3578. )
  3579. );
  3580. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  3581. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  3582. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  3583. );
  3584. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  3585. --第一步
  3586. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  3587. SELECT fadate FROM (
  3588. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  3589. ) t WHERE t.customerno = si1.scustid
  3590. );
  3591. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  3592. SELECT fadate FROM (
  3593. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  3594. ) t WHERE t.insuredno = si1.scustid
  3595. );
  3596. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  3597. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  3598. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  3599. SELECT fadate FROM (
  3600. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  3601. ) t WHERE t.customerno = si1.scustid
  3602. );
  3603. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  3604. SELECT fadate FROM (
  3605. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  3606. ) t WHERE t.insuredno = si1.scustid
  3607. );
  3608. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  3609. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  3610. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  3611. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  3612. WHERE p.salecomname IS NOT null
  3613. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3614. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  3615. --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
  3616. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3617. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  3618. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  3619. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  3620. -- 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
  3621. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3622. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  3623. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  3624. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  3625. 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
  3626. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3627. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  3628. --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
  3629. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3630. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  3631. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  3632. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  3633. -- 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
  3634. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3635. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  3636. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  3637. /*
  3638. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  3639. (SELECT
  3640. (CASE temp.appflag
  3641. WHEN '0' THEN '最近保单状态未承保'
  3642. WHEN '1' THEN '最近保单状态承保'
  3643. WHEN '2' THEN '最近保单状态新增附加险'
  3644. WHEN '4' THEN '最近保单状态终止'
  3645. WHEN '9' THEN '最近保单状态续保'
  3646. WHEN 'B' THEN '最近保单状态未对账'
  3647. WHEN 'F' THEN '最近保单状态对账失败'
  3648. END) a
  3649. FROM (
  3650. 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
  3651. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  3652. */
  3653. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  3654. SELECT '最近保单状态'||trim(t.appflag) FROM (
  3655. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  3656. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  3657. );
  3658. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  3659. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  3660. SELECT '客户最近一次办理'||t.edorname FROM (
  3661. SELECT
  3662. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  3663. l.edortype,
  3664. l.contno,
  3665. p.customerno,
  3666. l.edorappdate,
  3667. l.edorstate,
  3668. lm.edorcode,
  3669. lm.edorname
  3670. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  3671. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  3672. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3673. ) WHERE 1 = 1;
  3674. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  3675. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  3676. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3677. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  3678. )
  3679. );
  3680. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  3681. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  3682. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  3683. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  3684. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3685. );
  3686. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  3687. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  3688. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  3689. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  3690. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3691. );
  3692. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  3693. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  3694. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  3695. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  3696. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3697. );
  3698. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  3699. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  3700. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  3701. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3702. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  3703. )
  3704. );
  3705. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  3706. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  3707. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  3708. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3709. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  3710. ) and p.appflag = '有效'
  3711. );
  3712. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  3713. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  3714. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  3715. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  3716. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3717. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  3718. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  3719. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  3720. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  3721. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  3722. GROUP BY pi.customerno
  3723. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  3724. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  3725. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  3726. SELECT temp.customerno FROM (
  3727. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3728. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  3729. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3730. GROUP BY pi.customerno
  3731. ) temp WHERE temp.tnum = temp.pnum
  3732. );
  3733. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  3734. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  3735. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  3736. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  3737. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  3738. WHERE p.appflag = '有效' GROUP BY p.customerno
  3739. ) t WHERE t.pnum > 0);
  3740. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  3741. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  3742. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  3743. CASE si1.CustClass
  3744. WHEN 1 THEN '钻石客户'
  3745. WHEN 2 THEN '白金客户'
  3746. WHEN 3 THEN '黄金客户'
  3747. --WHEN 4 THEN '普通级别'
  3748. --ELSE '无级别'
  3749. ELSE ''
  3750. END
  3751. ) where 1 = 1;
  3752. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  3753. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  3754. SELECT '最近'||t.scenario FROM (
  3755. SELECT
  3756. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  3757. pl.partyid,
  3758. pl.scenario
  3759. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  3760. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  3761. );
  3762. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  3763. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  3764. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  3765. SELECT
  3766. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  3767. pl.partyid,
  3768. pl.scenario
  3769. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  3770. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  3771. );
  3772. --77 是否关注官微 Label73 关注官微 无 0
  3773. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  3774. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  3775. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  3776. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  3777. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  3778. --78 是否注册官微 Label74 注册官微 无 0
  3779. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  3780. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3781. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3782. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3783. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  3784. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  3785. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3786. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3787. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  3788. );
  3789. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  3790. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3791. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3792. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  3793. );
  3794. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  3795. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  3796. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  3797. --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;
  3798. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  3799. SELECT scustid FROM (
  3800. SELECT * FROM (
  3801. 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
  3802. , day(to_date(birthday)) userday from shanglifeecif.Individual
  3803. )
  3804. WHERE
  3805. (nowmonth != nextmonth AND
  3806. (
  3807. (nowmonth== usermonth AND userday> nowday )
  3808. or (nextmonth == usermonth AND userday <= nextday )
  3809. )
  3810. )
  3811. OR (nowmonth == nextmonth AND nowmonth == usermonth AND userday > nowday AND userday <=nextday )
  3812. )
  3813. );
  3814. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' WHERE si1.scustid IN (
  3815. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3816. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3817. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '父亲'
  3818. );
  3819. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  3820. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3821. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3822. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  3823. );
  3824. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  3825. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3826. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3827. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  3828. );
  3829. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' WHERE si1.scustid IN (
  3830. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3831. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3832. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '女儿'
  3833. );
  3834. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  3835. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  3836. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  3837. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  3838. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  3839. );
  3840. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  3841. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  3842. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  3843. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  3844. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  3845. );
  3846. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  3847. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  3848. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  3849. 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
  3850. );
  3851. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  3852. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  3853. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  3854. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  3855. );
  3856. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  3857. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3858. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3859. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  3860. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3861. GROUP BY pi.customerno
  3862. ) temp WHERE temp.tnum = temp.pnum);
  3863. --失效原因
  3864. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  3865. SELECT '有'||t.terminatestate||'保单' FROM (
  3866. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  3867. WHERE p.appflag <> '有效'
  3868. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3869. );
  3870. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  3871. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3872. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3873. --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
  3874. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3875. --GROUP BY pi.customerno
  3876. --) temp WHERE temp.tnum = temp.pnum);
  3877. --终止原因
  3878. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  3879. SELECT '有'||t.terminatestate||'保单' FROM (
  3880. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  3881. WHERE p.appflag = '终止'
  3882. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3883. );
  3884. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  3885. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3886. --SELECT
  3887. --CASE
  3888. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  3889. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  3890. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  3891. --END
  3892. -- FROM (
  3893. -- 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 (
  3894. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  3895. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  3896. -- ) t LEFT JOIN (
  3897. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  3898. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  3899. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  3900. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  3901. --) WHERE 1 = 1;
  3902. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3903. -- SELECT
  3904. -- CASE
  3905. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  3906. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  3907. -- WHEN t.dnum>60 THEN '宽限期外交费'
  3908. -- END
  3909. -- FROM (
  3910. -- 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
  3911. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  3912. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  3913. --) WHERE 1 = 1;
  3914. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3915. SELECT
  3916. CASE
  3917. WHEN t.dnum=0 THEN '上一年如期缴费'
  3918. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  3919. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  3920. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  3921. END
  3922. FROM (
  3923. SELECT
  3924. 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
  3925. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  3926. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  3927. ) WHERE 1 = 1;
  3928. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  3929. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  3930. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3931. SELECT contnos from dsj.cc_record_main
  3932. )
  3933. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  3934. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  3935. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  3936. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3937. SELECT contnos from dsj.cc_record_main
  3938. )
  3939. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  3940. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  3941. 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;
  3942. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  3943. --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
  3944. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  3945. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  3946. SELECT '长通话' FROM (
  3947. SELECT
  3948. t.contnos,
  3949. row_number()OVER(PARTITION BY p.customerno) rn,
  3950. p.customerno
  3951. FROM (
  3952. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  3953. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  3954. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  3955. GROUP BY m.contnos
  3956. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  3957. WHERE t.avgcalltime>600
  3958. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  3959. );
  3960. --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%'" 每次来电均下转办单的
  3961. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  3962. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3963. SELECT temp.policyno FROM (
  3964. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  3965. 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
  3966. UNION
  3967. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  3968. )t GROUP BY t.policyno
  3969. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  3970. )
  3971. );
  3972. --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%'" 咨询转办单项目为投诉
  3973. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  3974. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3975. SELECT temp.policyno FROM (
  3976. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  3977. 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
  3978. UNION
  3979. 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
  3980. )t GROUP BY t.policyno
  3981. ) temp WHERE temp.mnum = temp.fnum
  3982. )
  3983. );
  3984. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  3985. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  3986. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  3987. --(SELECT temp.productno FROM (
  3988. --SELECT t.productno,t.sinserttime,
  3989. --(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
  3990. --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
  3991. -- FROM
  3992. --(
  3993. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  3994. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  3995. --) t
  3996. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  3997. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  3998. SELECT t.customerno FROM (
  3999. SELECT
  4000. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  4001. t1.customerno,
  4002. t1.contno,
  4003. ca.inserttime FROM (
  4004. SELECT
  4005. max(p.customerno) customerno,
  4006. p.contno
  4007. FROM dsj.policy_information p GROUP BY p.contno
  4008. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  4009. ) t LEFT JOIN (
  4010. SELECT
  4011. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  4012. t1.customerno,
  4013. t1.contno,
  4014. ca.inserttime FROM (
  4015. SELECT
  4016. max(p.customerno) customerno,
  4017. p.contno
  4018. FROM dsj.policy_information p GROUP BY p.contno
  4019. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  4020. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  4021. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  4022. );
  4023. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  4024. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  4025. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  4026. SELECT
  4027. CASE
  4028. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  4029. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  4030. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  4031. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  4032. select group_concat((case c.complaintsSource
  4033. when '911' then '来电'
  4034. when '912' then '来访'
  4035. when '913' then '来函'
  4036. when '914' then '保监会转办'
  4037. when '919' then '保监局转办'
  4038. when '915' then '媒体转办'
  4039. when '916' then '同业公会'
  4040. when '917' then '其他转办'
  4041. when '918' then '呼出'
  4042. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  4043. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  4044. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  4045. ) tt WHERE tt.customerno = si1.scustid
  4046. );
  4047. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  4048. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  4049. --02个险渠道 期缴 大于20000以上
  4050. --03银保渠道 期缴 大于50000以上
  4051. --06健康险 期缴 大于 20000以上
  4052. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  4053. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  4054. p.appflag = '有效' AND p.payintv = '期缴' and
  4055. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  4056. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  4057. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  4058. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  4059. );
  4060. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  4061. 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) );
  4062. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  4063. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  4064. 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 = '立案')
  4065. );
  4066. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  4067. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  4068. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  4069. 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'
  4070. )
  4071. );
  4072. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  4073. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  4074. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  4075. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  4076. )
  4077. );
  4078. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  4079. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  4080. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  4081. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  4082. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  4083. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  4084. )
  4085. );
  4086. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  4087. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  4088. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  4089. 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
  4090. );
  4091. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  4092. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  4093. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  4094. dbms_output.put_line('updateindividuallable函数跑批完成!');
  4095. EXCEPTION
  4096. WHEN HIVE_EXCEPTION THEN
  4097. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  4098. WHEN Others THEN
  4099. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  4100. END