存储过程——new.sql 168 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374
  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 LIKE '%天' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT)
  1572. WHEN security LIKE '%月' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT) * 30
  1573. WHEN security LIKE '%年' THEN CAST(SUBSTR(security, 1, LENGTH(security) - 1) AS INT) * 365
  1574. WHEN security LIKE '%周岁' THEN CAST(SUBSTR(security, 2, LENGTH(security) - 3) AS INT) * 365
  1575. ELSE 0
  1576. end,
  1577. trim(AGENTCODE) as AGENTCODE,--代理人代码
  1578. trim(AGENTNAME) as AGENTNAME,--代理人名称
  1579. trim(paytodate) as paytodate,--续保日期
  1580. 'admin',
  1581. sysdate()
  1582. FROM dsj.policy_information;
  1583. --更新INSURANCEINFO 表中的信息
  1584. UPDATE shanglifeecif.insurancearrangement a SET (
  1585. pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1586. --pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1587. --padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1588. --policystate ,--INSURANCEINFO,appflag
  1589. --prem ,-- '总保费 INSURANCEINFO.PREM',
  1590. --productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1591. agentchannel -- '代理渠道 INSURANCEINFO.SELLTYPE',
  1592. ) = (
  1593. select
  1594. trim(b.PRTNO) as PRTNO,--pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  1595. --SIGNDATE,--pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  1596. --POLAPPLYDATE,--padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  1597. --appflag,--policystate ,--INSURANCEINFO,appflag
  1598. --PREM,--prem ,-- '总保费 INSURANCEINFO.PREM',
  1599. --RISKNAME,--productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  1600. trim(b.SELLTYPE) as SELLTYPE--agentchannel ,-- '代理渠道 INSURANCEINFO.SELLTYPE',
  1601. from dsj.INSURANCEINFO b
  1602. where b.contno = a.policyno
  1603. ) WHERE 1=1 ;
  1604. dbms_output.put_line('init_insurancearrangement_policy_information函数跑批完成!');
  1605. EXCEPTION
  1606. WHEN HIVE_EXCEPTION THEN
  1607. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1608. WHEN Others THEN
  1609. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1610. END;
  1611. CREATE OR REPLACE PROCEDURE shanglifeecif.insuranceclaimthread_main() -- 创建主存储过程
  1612. IS
  1613. BEGIN
  1614. insert into shanglifeecif.insuranceclaimthread (
  1615. icthreadid ,--'保险理赔Id',1
  1616. crno ,--'立案号',2
  1617. --companyno ,-- '公司代码',
  1618. policyno ,--'保险单号 INSURANCE_CLAIM.CONTNO',3
  1619. --applicantid ,--'投保人ID',
  1620. --appname ,--'投保人名称',
  1621. --appphone ,--'投保人手机',
  1622. --appcertid ,--'投保人证件号码 INSURANCE_CLAIM.RISKDATE',
  1623. cnno ,--'报案号',4
  1624. losstime ,-- '损失发生时间',5
  1625. --rpid ,-- '报案人',
  1626. rpname ,--'报案人名称',6
  1627. --rpphone ,-- '报案人电话',
  1628. --lpid ,--'出险人 根据INSURANCE_CLAIM.INSUREDNO获取indid',
  1629. lpscutid,--'出险人上游客户号7
  1630. lpname ,-- '出险人名称',
  1631. cndate ,--'报案日期 INSURANCE_CLAIM.RPTDATE',
  1632. lossdescribe ,-- '损失原因 案件发生的原因:INSURANCE_CLAIM.LLOCCURREASON',
  1633. crdate ,-- '立案日期 INSURANCE_CLAIM.RGTDATE',
  1634. cndescribe ,--'报案描述 INSURANCE_CLAIM.ACCIDENTDETAIL',
  1635. claimstatus ,--'理赔状态 案件的状态,例如:录入、已立案等',
  1636. csdate ,--'理赔状态日期',
  1637. relationship ,-- '报案人与出险人关系',
  1638. ccno ,-- '赔案号 AUDIT_CLAIM_INSURANCE.CLMNO',
  1639. ccstatus ,--'赔案状态',
  1640. --ccsdate ,-- '赔案状态日期',
  1641. productid ,--'险种代码 INSURANCE_CLAIM_HEALTH.RISKCODE',
  1642. productname, --'险种名称 INSURANCE_CLAIM_HEALTH.RISKNAME',
  1643. ccamt ,--'赔付金额 INSURANCE_CLAIM_HEALTH.realpay',
  1644. --branchcode,-- '机构代码',
  1645. claimcasestatus ,--'案件状态INSURANCE_CLAIM_HEALTH.LLCLAIMSTATE',
  1646. accidenttype,
  1647. created_by ,
  1648. created_time
  1649. -- updated_time,
  1650. -- updated_by
  1651. ) select
  1652. row_number()over(),--1
  1653. trim(rgtno) as rgtno,--2
  1654. trim(contno) as contno,--3
  1655. trim(rptno) as rptno,--报案号4
  1656. trim(riskdate) as riskdate,--损失发生的时间5
  1657. trim(rptorname) as rptorname,--报案人名称6
  1658. trim(INSUREDNO) as INSUREDNO,--出险人 上游客户号
  1659. trim(INSUREDNAME) as INSUREDNAME,
  1660. trim(rptdate) as rptdate,
  1661. trim(lloccurreason) as lloccurreason,
  1662. trim(rgtdate) as rgtdate,
  1663. trim(ACCDESC) as ACCDESC,--报案描述
  1664. trim(llclaimstate) as llclaimstate,
  1665. trim(auditdate) as auditdate,--审批日期
  1666. trim(relationname) as relationname,
  1667. trim(clmno) as clmno,--赔案号
  1668. trim(llgettype) as llgettype,--赔案状态
  1669. trim(riskcode) as riskcode,
  1670. trim(riskname) as riskname,
  1671. realpay,
  1672. trim(llclaimstate) as llclaimstate,--案件状态
  1673. trim(accidenttype) as accidenttype,
  1674. 'admin',
  1675. sysdate()
  1676. from dsj.INSURANCE_CLAIM where contno is not null;
  1677. -- 更新渠道字段
  1678. shanglifeecif.update_insuranceclaimthread_add_salecom();
  1679. dbms_output.put_line('insuranceclaimthread_main函数跑批完成!');
  1680. EXCEPTION
  1681. WHEN HIVE_EXCEPTION THEN
  1682. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1683. WHEN Others THEN
  1684. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1685. END;
  1686. CREATE OR REPLACE PROCEDURE shanglifeecif.newprocedure( )
  1687. IS
  1688. DECLARE
  1689. s_count int
  1690. BEGIN
  1691. DELETE FROM shanglifeecif.IndRelationShip;
  1692. --从保单信息表(dsj.POLICY_INFORMATION)获取投保人和被保人的关系并
  1693. --第一步取关系父母,子女
  1694. insert into shanglifeecif.IndRelationShip(
  1695. irsid,
  1696. RSType,
  1697. IndID1,
  1698. Name1,
  1699. IDCard1,
  1700. Role1,
  1701. IndID2,
  1702. Name2,
  1703. IDCard2,
  1704. RSSTime,
  1705. Role2
  1706. )SELECT
  1707. reflect("java.util.UUID", "randomUUID"),
  1708. '父母',
  1709. p.CUSTOMERNO,
  1710. max(p.NAME),
  1711. max(p.IDNO),
  1712. CASE max(p.sex)
  1713. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  1714. p.INSUREDNO,
  1715. max(p.INSUREDNAME),
  1716. max(p.INSUREDIDNO),
  1717. min(p.polapplydate),
  1718. CASE max(p.INSUREDSEX)
  1719. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END
  1720. FROM dsj.POLICY_INFORMATION p
  1721. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1722. AND p.birthday > p.insuredbirthday
  1723. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1724. insert into shanglifeecif.IndRelationShip(
  1725. irsid,
  1726. RSType,
  1727. IndID1,
  1728. Name1,
  1729. IDCard1,
  1730. Role1,
  1731. IndID2,
  1732. Name2,
  1733. IDCard2,
  1734. RSSTime,
  1735. Role2
  1736. )
  1737. SELECT
  1738. reflect("java.util.UUID", "randomUUID"),
  1739. '子女',
  1740. p.CUSTOMERNO,
  1741. max(p.NAME),
  1742. max(p.IDNO),
  1743. CASE max(p.sex)
  1744. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  1745. p.INSUREDNO,
  1746. max(p.INSUREDNAME),
  1747. max(p.INSUREDIDNO),
  1748. min(p.polapplydate),
  1749. CASE max(p.INSUREDSEX)
  1750. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END
  1751. FROM dsj.POLICY_INFORMATION p
  1752. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  1753. AND p.birthday < p.insuredbirthday
  1754. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1755. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  1756. insert into shanglifeecif.IndRelationShip(
  1757. irsid,
  1758. RSType,
  1759. IndID1,
  1760. Name1,
  1761. IDCard1,
  1762. Role1,
  1763. IndID2,
  1764. Name2,
  1765. IDCard2,
  1766. RSSTime,
  1767. Role2
  1768. )SELECT
  1769. reflect("java.util.UUID", "randomUUID"),
  1770. '祖父母、外祖父母',
  1771. p.CUSTOMERNO,
  1772. max(p.NAME),
  1773. max(p.IDNO),
  1774. CASE max(p.sex)
  1775. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  1776. p.INSUREDNO,
  1777. max(p.INSUREDNAME),
  1778. max(p.INSUREDIDNO),
  1779. min(p.polapplydate),
  1780. CASE max(p.INSUREDSEX)
  1781. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END
  1782. FROM dsj.POLICY_INFORMATION p
  1783. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1784. AND p.birthday > p.insuredbirthday
  1785. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1786. insert into shanglifeecif.IndRelationShip(
  1787. irsid,
  1788. RSType,
  1789. IndID1,
  1790. Name1,
  1791. IDCard1,
  1792. Role1,
  1793. IndID2,
  1794. Name2,
  1795. IDCard2,
  1796. RSSTime,
  1797. Role2
  1798. )SELECT
  1799. reflect("java.util.UUID", "randomUUID"),
  1800. '祖孙、外祖孙',
  1801. p.CUSTOMERNO,
  1802. max(p.NAME),
  1803. max(p.IDNO),
  1804. CASE max(p.sex)
  1805. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  1806. p.INSUREDNO,
  1807. max(p.INSUREDNAME),
  1808. max(p.INSUREDIDNO),
  1809. min(p.polapplydate),
  1810. CASE max(p.INSUREDSEX)
  1811. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END
  1812. FROM dsj.POLICY_INFORMATION p
  1813. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  1814. AND p.birthday < p.insuredbirthday
  1815. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1816. --第三步取配偶和其他
  1817. insert into shanglifeecif.IndRelationShip(
  1818. irsid,
  1819. RSType,
  1820. IndID1,
  1821. Name1,
  1822. IDCard1,
  1823. Role1,
  1824. IndID2,
  1825. Name2,
  1826. IDCard2,
  1827. RSSTime,
  1828. Role2
  1829. )SELECT
  1830. reflect("java.util.UUID", "randomUUID"),
  1831. max(p.RELATIONTOAPPNT),
  1832. p.CUSTOMERNO,
  1833. max(p.NAME),
  1834. max(p.IDNO),
  1835. CASE max(p.RELATIONTOAPPNT)
  1836. WHEN '配偶'
  1837. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1838. ELSE max(p.RELATIONTOAPPNT)
  1839. END,
  1840. p.INSUREDNO,
  1841. max(p.INSUREDNAME),
  1842. max(p.INSUREDIDNO),
  1843. min(p.polapplydate),
  1844. CASE max(p.RELATIONTOAPPNT)
  1845. WHEN '配偶'
  1846. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  1847. ELSE max(p.RELATIONTOAPPNT)
  1848. END
  1849. FROM dsj.POLICY_INFORMATION p
  1850. WHERE p.RELATIONTOAPPNT = '配偶'
  1851. -- or p.RELATIONTOAPPNT = '其他'
  1852. GROUP BY p.CUSTOMERNO,p.INSUREDNO;
  1853. -- 完善被保人关系
  1854. /** */
  1855. insert into shanglifeecif.IndRelationShip(
  1856. irsid,
  1857. RSType,
  1858. IndID1,
  1859. Name1,
  1860. IDCard1,
  1861. Role1,
  1862. IndID2,
  1863. Name2,
  1864. IDCard2,
  1865. Role2
  1866. )SELECT reflect("java.util.UUID", "randomUUID"),
  1867. CASE RSType
  1868. WHEN '父母' THEN '子女'
  1869. WHEN '子女' THEN '父母'
  1870. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  1871. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  1872. WHEN '配偶' THEN '配偶'
  1873. ELSE RSType
  1874. END,
  1875. IndID2,
  1876. Name2,
  1877. IDCard2,
  1878. Role2,
  1879. IndID1,
  1880. Name1,
  1881. IDCard1,
  1882. Role1
  1883. FROM shanglifeecif.IndRelationShip sis ;
  1884. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  1885. EXCEPTION
  1886. WHEN HIVE_EXCEPTION THEN
  1887. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1888. WHEN Others THEN
  1889. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1890. END;
  1891. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_bq()
  1892. IS
  1893. DECLARE
  1894. p_count int
  1895. BEGIN
  1896. insert into shanglifeecif.partytimeline (
  1897. TripID,
  1898. PolicyNo,
  1899. PartyID,
  1900. name,
  1901. PRole,
  1902. Scenario,
  1903. SDate,
  1904. DESCRIBE,
  1905. created_by ,
  1906. created_time
  1907. )select
  1908. reflect("java.util.UUID", "randomUUID"),
  1909. i.contno,
  1910. i.customerno,
  1911. max(i.name),
  1912. '投保人' AS tbr,
  1913. '保全' AS bq,
  1914. l.edorappdate,
  1915. max(lm.edorname),
  1916. 'admin',
  1917. sysdate()
  1918. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information i
  1919. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND i.contno = l.contno
  1920. GROUP BY i.customerno,i.contno,l.edorappdate,l.edortype;
  1921. dbms_output.put_line('partytimeline_bq函数跑批完成!');
  1922. EXCEPTION
  1923. WHEN HIVE_EXCEPTION THEN
  1924. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1925. WHEN Others THEN
  1926. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1927. END
  1928. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_hf()
  1929. IS
  1930. DECLARE
  1931. p_count int
  1932. BEGIN
  1933. insert into shanglifeecif.partytimeline (
  1934. TripID,
  1935. PolicyNo,
  1936. PartyID,
  1937. name,
  1938. PRole,
  1939. Scenario,
  1940. SDate,
  1941. DESCRIBE,
  1942. created_by ,
  1943. created_time
  1944. ) SELECT
  1945. reflect("java.util.UUID", "randomUUID"),
  1946. cad.productno,
  1947. cac.customerno,
  1948. max(cac.customername),
  1949. '投保人',
  1950. '回访',
  1951. cad.lastdealtime,
  1952. CASE max(cad.actiondefguid)
  1953. when '402837815c1a4fc6015c1a735351122d' then '特殊回访'
  1954. when '402837815c1a4fc6015c1a735350012a' then '其他回访'
  1955. when '402837815c2ff6b5015c3005e7fb0004' then '失效回访'
  1956. when '402837815c2ff6b5015c3005e7fb2222' then '回执超期回访'
  1957. when '402837815c2ff6b5015c3005e7fb0003' then '宽限期50天'
  1958. when '402837815c2ff6b5015c3005e7fb0002' then '宽限期30天'
  1959. when '402837815c1a4fc6015c1a735350012f' then '新契约回访'
  1960. when '402837815c2ff6b5015c3005e7fb0001' then '续期回访'
  1961. end ,
  1962. 'admin',
  1963. sysdate()
  1964. FROM dsj.CC_ACTION_DATA cad,dsj.cc_action_customerinfo cac
  1965. WHERE cac.unioncustomerid = cad.unioncustomerid AND cad.lastdealtime IS NOT null GROUP BY cad.productno,cac.customerno,cad.lastdealtime;
  1966. dbms_output.put_line('partytimeline_hf函数跑批完成!');
  1967. EXCEPTION
  1968. WHEN HIVE_EXCEPTION THEN
  1969. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1970. WHEN Others THEN
  1971. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1972. END;
  1973. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_lp()
  1974. IS
  1975. DECLARE
  1976. p_count int
  1977. BEGIN
  1978. insert into shanglifeecif.partytimeline (
  1979. TripID,
  1980. PolicyNo,
  1981. PartyID,
  1982. name,
  1983. PCertID,
  1984. PRole,
  1985. Scenario,
  1986. SDate,
  1987. describe,
  1988. created_by ,
  1989. created_time
  1990. ) select
  1991. reflect("java.util.UUID", "randomUUID"),
  1992. trim(contno) as contno,
  1993. trim(INSUREDNO) as INSUREDNO,
  1994. trim(INSUREDNAME) as INSUREDNAME,
  1995. trim(idno) as idno,
  1996. '投保人',
  1997. '理赔',
  1998. CASE
  1999. WHEN APPLYDATE IS NOT NULL THEN APPLYDATE
  2000. WHEN APPLYDATE IS NULL THEN RPTDATE
  2001. END AS SDate,
  2002. trim(ACCIDENTTYPE) as ACCIDENTTYPE,
  2003. 'admin',
  2004. sysdate()
  2005. from dsj.insurance_claim WHERE contno IS NOT NULL;
  2006. dbms_output.put_line('partytimeline_lp函数跑批完成!');
  2007. EXCEPTION
  2008. WHEN HIVE_EXCEPTION THEN
  2009. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2010. WHEN Others THEN
  2011. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2012. END;
  2013. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_main()
  2014. IS
  2015. BEGIN
  2016. DELETE FROM shanglifeecif.partytimeline;
  2017. shanglifeecif.partytimeline_tb();
  2018. shanglifeecif.partytimeline_lp();
  2019. shanglifeecif.partytimeline_zx();
  2020. shanglifeecif.partytimeline_bq();
  2021. shanglifeecif.partytimeline_tuibao();
  2022. shanglifeecif.partytimeline_ts();
  2023. shanglifeecif.partytimeline_hf();
  2024. shanglifeecif.partytimeline_xq();
  2025. -- 更新渠道字段
  2026. shanglifeecif.update_partytimeline_add_salecom();
  2027. END;
  2028. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tb() -- 创建主存储过程
  2029. IS
  2030. BEGIN
  2031. insert into shanglifeecif.partytimeline (
  2032. TripID,
  2033. PolicyNo,
  2034. PartyID,
  2035. name,
  2036. PCertID,
  2037. PRole,
  2038. Scenario,
  2039. SDate,
  2040. enddate,
  2041. created_by ,
  2042. created_time
  2043. ) select
  2044. reflect("java.util.UUID", "randomUUID"),
  2045. trim(contno) as contno,
  2046. trim(max(customerno)) as customerno,
  2047. trim(max(name)) as name,
  2048. trim(max(idno)) as idno,
  2049. '投保人',
  2050. '投保',
  2051. trim(max(polapplydate)) as polapplydate,
  2052. trim(max(enddate)) as enddate,
  2053. 'admin',
  2054. sysdate()
  2055. from dsj.policy_information WHERE contno IS NOT NULL GROUP BY contno;
  2056. dbms_output.put_line('partytimeline_tb函数跑批完成!');
  2057. EXCEPTION
  2058. WHEN HIVE_EXCEPTION THEN
  2059. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2060. WHEN Others THEN
  2061. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2062. END;
  2063. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_ts()
  2064. IS
  2065. DECLARE
  2066. p_count int
  2067. BEGIN
  2068. insert into shanglifeecif.partytimeline (
  2069. TripID,
  2070. PolicyNo,
  2071. PartyID,
  2072. name,
  2073. PRole,
  2074. Scenario,
  2075. SDate,
  2076. DESCRIBE,
  2077. created_by ,
  2078. created_time
  2079. ) SELECT
  2080. reflect("java.util.UUID", "randomUUID"),
  2081. max(ac.productnos),
  2082. max(i.customerno),
  2083. max(ac.complaintsname),
  2084. '投保人'||CASE max(ac.complaintsrelation)
  2085. WHEN '201' THEN ''
  2086. WHEN '202' THEN '子女'
  2087. WHEN '203' THEN '配偶'
  2088. WHEN '204' THEN '父母'
  2089. WHEN '205' THEN '其他关系'
  2090. END AS complaintsrelation,
  2091. '投诉',
  2092. ac.inserttime ,
  2093. CASE max(ac.resultclassification)
  2094. WHEN '101' THEN '销售纠纷'
  2095. WHEN '102' THEN '理赔纠纷'
  2096. WHEN '103' THEN '退保纠纷'
  2097. WHEN '104' THEN '承保纠纷'
  2098. WHEN '105' THEN '续收续保纠纷'
  2099. WHEN '106' THEN '保全纠纷'
  2100. WHEN '107' THEN '其他'
  2101. END as resultclassification,
  2102. 'admin',
  2103. sysdate
  2104. FROM dsj.cc_action_complaints ac
  2105. LEFT JOIN dsj.policy_information i ON ac.productnos = i.contno
  2106. WHERE ac.productnos IS NOT NULL AND i.customerno IS NOT NULL
  2107. GROUP BY ac.inserttime ;
  2108. dbms_output.put_line('partytimeline_ts函数跑批完成!');
  2109. EXCEPTION
  2110. WHEN HIVE_EXCEPTION THEN
  2111. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2112. WHEN Others THEN
  2113. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2114. END;
  2115. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_tuibao()
  2116. IS
  2117. DECLARE
  2118. p_count int
  2119. BEGIN
  2120. insert into shanglifeecif.partytimeline (
  2121. TripID,
  2122. PolicyNo,
  2123. PartyID,
  2124. name,
  2125. PRole,
  2126. Scenario,
  2127. SDate,
  2128. DESCRIBE,
  2129. created_by ,
  2130. created_time
  2131. ) SELECT
  2132. reflect("java.util.UUID", "randomUUID"),
  2133. trim(t.contno) as contno,
  2134. trim(t.customerno) as customerno,
  2135. trim(t.name) as name,
  2136. trim(t.tbr) as tbr,
  2137. trim(t.tb) as tb,
  2138. trim(t.edorappdate) as edorappdate,
  2139. t.edorreason,
  2140. 'admin',
  2141. sysdate()
  2142. FROM (
  2143. SELECT
  2144. row_number() over(partition by i.contno) rn,
  2145. lm.contno,
  2146. i.customerno,
  2147. i.name,
  2148. '投保人' AS tbr,
  2149. '退保' AS tb,
  2150. to_char(lm.edorappdate,"yyyy-MM-dd") edorappdate,
  2151. CASE lm.edorreasoncode
  2152. WHEN '01' THEN '死亡'
  2153. WHEN '02' THEN '失踪'
  2154. WHEN '03' THEN '离异'
  2155. WHEN '04' THEN '债权转移'
  2156. WHEN '05' THEN '被保险人成年'
  2157. WHEN '06' THEN '其它'
  2158. ELSE '其它'
  2159. END AS edorreason
  2160. FROM dsj.lpedoritem lm,dsj.policy_information i
  2161. where lm.contno = i.contno AND lm.edortype='CT' AND lm.edorstate = 0
  2162. ) t WHERE t.rn = 1;
  2163. dbms_output.put_line('partytimeline_tuibao函数跑批完成!');
  2164. EXCEPTION
  2165. WHEN HIVE_EXCEPTION THEN
  2166. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2167. WHEN Others THEN
  2168. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2169. END;
  2170. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_xq() -- 创建主存储过程
  2171. IS
  2172. BEGIN
  2173. insert into shanglifeecif.partytimeline (
  2174. TripID,
  2175. PolicyNo,
  2176. PartyID,
  2177. name,
  2178. PRole,
  2179. Scenario,
  2180. SDate,
  2181. created_by ,
  2182. created_time
  2183. ) select
  2184. reflect("java.util.UUID", "randomUUID"),
  2185. lp.contno,
  2186. lp.appntno,
  2187. '',
  2188. '投保人',
  2189. '续期',
  2190. to_char(lp.confdate,'yyyy-MM-dd'),
  2191. 'admin',
  2192. sysdate
  2193. FROM dsj.ljapayperson lp WHERE lp.paycount > 1;
  2194. dbms_output.put_line('partytimeline_xq函数跑批完成!');
  2195. EXCEPTION
  2196. WHEN HIVE_EXCEPTION THEN
  2197. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2198. WHEN Others THEN
  2199. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2200. END;
  2201. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_zx()
  2202. IS
  2203. DECLARE
  2204. p_count int
  2205. BEGIN
  2206. insert into shanglifeecif.partytimeline (
  2207. TripID,
  2208. PolicyNo,
  2209. PartyID,
  2210. name,
  2211. PRole,
  2212. Scenario,
  2213. SDate,
  2214. DESCRIBE,
  2215. created_by ,
  2216. created_time
  2217. ) SELECT
  2218. reflect("java.util.UUID", "randomUUID"),
  2219. m.contnos,
  2220. max(i.customerno) customerno,
  2221. max(m.econtactsName) econtactsName,
  2222. '投保人' AS tbr,
  2223. '咨询' AS zx,
  2224. m.starttime,
  2225. max(m.reasonsecondname) reasonsecondname,
  2226. 'admin',
  2227. sysdate()
  2228. from dsj.cc_record_main m
  2229. LEFT JOIN dsj.policy_information i ON m.contnos = i.contno
  2230. WHERE m.contnos IS NOT NULL GROUP BY m.contnos,m.starttime;
  2231. dbms_output.put_line('partytimeline_zx函数跑批完成!');
  2232. EXCEPTION
  2233. WHEN HIVE_EXCEPTION THEN
  2234. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2235. WHEN Others THEN
  2236. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2237. END;
  2238. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics() IS
  2239. DECLARE
  2240. BEGIN
  2241. DELETE FROM shanglifeecif.riskcode_statistics;
  2242. insert into shanglifeecif.riskcode_statistics (
  2243. id,
  2244. kindName,
  2245. khnum,
  2246. tatolprem
  2247. ) --险种大类统计
  2248. SELECT
  2249. row_number()over(),
  2250. temp.kindName,
  2251. temp.khnum,
  2252. temp.tatolprem
  2253. FROM (
  2254. SELECT
  2255. crt.riskcategoriesname AS kindName,
  2256. count(DISTINCT scustid) AS khnum,
  2257. sum(risk) AS tatolprem
  2258. FROM shanglifeecif.customer_risk_temp crt
  2259. WHERE crt.riskcategoriesname IS NOT null
  2260. GROUP BY crt.riskcategoriesname
  2261. ) temp;
  2262. dbms_output.put_line('riskcode_statistics函数跑批完成!');
  2263. EXCEPTION
  2264. WHEN HIVE_EXCEPTION THEN
  2265. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2266. WHEN Others THEN
  2267. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2268. END ;
  2269. CREATE OR REPLACE PROCEDURE shanglifeecif.riskcode_statistics_channel() IS
  2270. DECLARE
  2271. BEGIN
  2272. DELETE FROM shanglifeecif.riskcode_statistics_channel;
  2273. insert into shanglifeecif.riskcode_statistics_channel (
  2274. id,
  2275. kindName,
  2276. khnum,
  2277. tatolprem,
  2278. salecom,
  2279. salecomname
  2280. ) --险种大类统计
  2281. SELECT
  2282. row_number()over(),
  2283. temp.kindName,
  2284. temp.khnum,
  2285. temp.tatolprem,
  2286. temp.salecom,
  2287. temp.salecomname
  2288. FROM (
  2289. SELECT
  2290. crt.riskcategoriesname AS kindName,
  2291. count(DISTINCT scustid) AS khnum,
  2292. sum(risk) AS tatolprem,
  2293. crt.salecom AS salecom,
  2294. crt.salecomname AS salecomname
  2295. FROM shanglifeecif.customer_risk_temp crt
  2296. WHERE crt.riskcategoriesname IS NOT null
  2297. and crt.salecom is not null
  2298. GROUP BY crt.riskcategoriesname,crt.salecom,crt.salecomname
  2299. ) temp;
  2300. dbms_output.put_line('riskcode_statistics_channel函数跑批完成!');
  2301. EXCEPTION
  2302. WHEN HIVE_EXCEPTION THEN
  2303. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2304. WHEN Others THEN
  2305. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2306. END ;
  2307. CREATE OR REPLACE PROCEDURE shanglifeecif.same_customer() -- 创建主存储过程
  2308. IS
  2309. DECLARE
  2310. scount int
  2311. BEGIN
  2312. DELETE FROM shanglifeecif.samecustomer;
  2313. INSERT INTO shanglifeecif.samecustomer(
  2314. sid,
  2315. scustid,
  2316. name,
  2317. gender,
  2318. birthday,
  2319. idcard,
  2320. Passport,
  2321. Dlicense,
  2322. OtherIdNumber,
  2323. sameType
  2324. )
  2325. SELECT
  2326. reflect("java.util.UUID", "randomUUID"),
  2327. sc1.scustid,
  2328. sc1.name,
  2329. sc1.gender,
  2330. sc1.birthday,
  2331. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2332. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2333. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2334. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2335. 0
  2336. FROM shanglifeecif.customertotaltemp sc1
  2337. WHERE sc1.mobile IS NOT NULL AND EXISTS (SELECT 1 FROM shanglifeecif.customertotaltemp sc2 WHERE sc1.scustid != sc2.scustid
  2338. AND sc1.name = sc2.name AND sc1.gender = sc2.gender AND sc1.idtype = sc2.idtype AND sc1.mobile = sc2.mobile);
  2339. --三要素疑似相同指姓名、性别、出生日期一致 1
  2340. INSERT INTO shanglifeecif.samecustomer(
  2341. sid,
  2342. scustid,
  2343. name,
  2344. gender,
  2345. birthday,
  2346. idcard,
  2347. Passport,
  2348. Dlicense,
  2349. OtherIdNumber,
  2350. sameType
  2351. )
  2352. SELECT
  2353. reflect("java.util.UUID", "randomUUID"),
  2354. sc1.scustid,
  2355. sc1.name,
  2356. sc1.gender,
  2357. sc1.birthday,
  2358. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2359. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2360. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2361. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2362. 1
  2363. FROM shanglifeecif.customertotaltemp sc1
  2364. 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 )
  2365. ORDER BY sc1.name,sc1.gender,sc1.birthday
  2366. --两要素疑似相同指姓名、证件号码一致 2
  2367. INSERT INTO shanglifeecif.samecustomer(
  2368. sid,
  2369. scustid,
  2370. name,
  2371. gender,
  2372. birthday,
  2373. idcard,
  2374. Passport,
  2375. Dlicense,
  2376. OtherIdNumber,
  2377. sameType
  2378. )
  2379. SELECT
  2380. reflect("java.util.UUID", "randomUUID"),
  2381. sc1.scustid,
  2382. sc1.name,
  2383. sc1.gender,
  2384. sc1.birthday,
  2385. CASE sc1.idtype WHEN '0' THEN sc1.idcard END AS idcard,
  2386. CASE sc1.idtype WHEN '1' THEN sc1.idcard END AS passport,
  2387. CASE sc1.idtype WHEN '3' THEN sc1.idcard END AS dlicense,
  2388. CASE WHEN sc1.idtype <> '0' AND sc1.idtype <> '1' AND sc1.idtype <> '3' THEN sc1.idcard END AS otherIdnumber,
  2389. 2
  2390. FROM shanglifeecif.customertotaltemp sc1
  2391. 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);
  2392. dbms_output.put_line('same_customer函数跑批完成!');
  2393. END;
  2394. CREATE OR REPLACE PROCEDURE shanglifeecif.surrender_protection_temp() IS
  2395. DECLARE
  2396. BEGIN
  2397. DELETE FROM shanglifeecif.surrenderprotectiontemp;
  2398. insert into shanglifeecif.surrenderprotectiontemp(
  2399. tbid,
  2400. scustid,
  2401. tbday
  2402. )SELECT row_number()over(),p.customerno,max(DATEDIFF(t.edorappdate,p.cvalidate)) AS tbday FROM dsj.lpedoritem t,dsj.policy_information p
  2403. WHERE t.contno = p.contno and t.edortype='CT' AND edorstate = 0 GROUP BY p.customerno;
  2404. dbms_output.put_line('surrender_protection_temp函数跑批完成!');
  2405. EXCEPTION
  2406. WHEN HIVE_EXCEPTION THEN
  2407. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2408. WHEN Others THEN
  2409. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2410. END ;
  2411. CREATE OR REPLACE PROCEDURE shanglifeecif.tb_customerinfo() IS
  2412. DECLARE
  2413. BEGIN
  2414. DELETE FROM shanglifeecif.tbcustomerinfo;
  2415. insert into shanglifeecif.tbcustomerinfo(
  2416. tbid,
  2417. scustid,
  2418. contno,
  2419. sdate,
  2420. edate,
  2421. salecom,
  2422. salecomname
  2423. )SELECT row_number()over(),p.customerno,p.contno,p.cvalidate,t.edorappdate ,p.salecom,p.salecomname FROM dsj.lpedoritem t,dsj.policy_information p
  2424. WHERE t.contno = p.contno and (t.edortype='CT' OR t.edortype='WT' ) AND t.edorstate = 0 ;
  2425. dbms_output.put_line('tb_customerinfo函数跑批完成!');
  2426. EXCEPTION
  2427. WHEN HIVE_EXCEPTION THEN
  2428. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2429. WHEN Others THEN
  2430. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2431. END ;
  2432. CREATE OR REPLACE PROCEDURE shanglifeecif.up_other_customerinfo() -- 创建存储过程
  2433. IS
  2434. BEGIN
  2435. --更新客户类型投保人
  2436. UPDATE shanglifeecif.individual i SET i.custtype = '投保人' WHERE
  2437. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p);
  2438. --更新客户类型投保人、被保人
  2439. UPDATE shanglifeecif.individual i SET i.custtype = '被保人' WHERE
  2440. i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  2441. --更新客户类型投保人、被保人
  2442. UPDATE shanglifeecif.individual i SET i.custtype = '投保人、被保人' WHERE
  2443. i.scustid IN (SELECT p.customerno FROM dsj.policy_information p)
  2444. AND i.scustid IN (SELECT pi.insuredno FROM dsj.policy_information pi);
  2445. --更新业绩归属
  2446. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  2447. SELECT trim(t.SALECOM) FROM (
  2448. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate asc) rd,p.customerno,p.SALECOM FROM dsj.policy_information p
  2449. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2450. );
  2451. UPDATE shanglifeecif.Individual si1 SET si1.policybelong = (
  2452. SELECT trim(t.SALECOM) FROM (
  2453. SELECT row_number()OVER(PARTITION BY p.insuredno ORDER BY p.polapplydate asc) rd,p.insuredno,p.SALECOM FROM dsj.policy_information p
  2454. ) t WHERE t.rd = 1 AND si1.scustid = t.insuredno
  2455. );
  2456. --更新职业,民族等信息
  2457. UPDATE shanglifeecif.Individual si1 SET (si1.Occupation,si1.Ethnic,si1.education) = (
  2458. SELECT trim(t.occupationname),trim(t.NATIONALITYNAME),trim(t.degree) FROM (
  2459. 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
  2460. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  2461. );
  2462. --更新官微积分
  2463. UPDATE shanglifeecif.individual si SET si.officialCalculus = (
  2464. 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
  2465. );
  2466. dbms_output.put_line('up_other_customerinfo函数跑批完成!');
  2467. EXCEPTION
  2468. WHEN HIVE_EXCEPTION THEN
  2469. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2470. WHEN Others THEN
  2471. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2472. END;
  2473. CREATE OR REPLACE PROCEDURE shanglifeecif.up_t_customers_class_1() -- 创建存储过程
  2474. IS
  2475. BEGIN
  2476. UPDATE shanglifeecif.individual a SET (
  2477. CustClass ,-- 客户等级
  2478. ConValue ,-- 贡献度分
  2479. Awarded3 ,-- 家庭加分2
  2480. Awarded2 ,-- 续期加分
  2481. Awarded1 ,-- 保单加分
  2482. SOValue ,-- 总分值
  2483. EndDate, -- 客户等级失效日期
  2484. Height, --身高
  2485. Weight, --体重
  2486. BMI,
  2487. PIncome, --个人年收入
  2488. FIncome, --家庭年收入
  2489. IncomeSource, --收入来源
  2490. SIStatus, --社保情况
  2491. --Ethnic, --民族情况
  2492. Nation, --国籍
  2493. MaritalStat, --婚姻
  2494. Employer,--工作单位
  2495. --Education,--学历
  2496. Dday, --死亡日期
  2497. regtype, --户籍类型
  2498. ZIPCODE,--邮编
  2499. HPhone,--电话
  2500. PMPhone,--手机
  2501. email, -- 邮箱
  2502. RAL, --联系地址
  2503. sobirth --省份
  2504. ) = (
  2505. select
  2506. b.CLASS_VALUE,--客户等级
  2507. b.CONTRIBUTION_VALUE,--贡献度分
  2508. b.AWARDED3, --家庭加分
  2509. b.AWARDED2, --续期加分
  2510. b.AWARDED1, --保单加分
  2511. b.TOTAL_VALUE, --总分值
  2512. trim(b.END_DATE) as END_DATE, --失效日期
  2513. b.STATURE, --身高
  2514. b.AVOIRDUPOIS,--体重
  2515. b.BMI, --根据身高体重计算
  2516. b.YEARINCOME, --个人年收入
  2517. b.FAMILYYEARSALARY, --家庭年收入
  2518. trim(b.INCOMESOURCE) as INCOMESOURCE, --收入来源
  2519. trim(b.SOCIALINSUFLAG) as SOCIALINSUFLAG, --社保情况
  2520. --trim(b.NATIONALITY) as NATIONALITY, --民族情况
  2521. trim(b.NATIVEPLACE) as NATIVEPLACE, --国籍
  2522. trim(b.MARRIAGE) as MARRIAGE,--婚姻
  2523. trim(b.GRPNAME) as GRPNAME,--工作单位名称
  2524. --trim(b.DEGREE) as DEGREE,--学历
  2525. trim(b.DEATHDATE) as DEATHDATE,--死亡日期
  2526. trim(b.DENTYPE) as DENTYPE,--户籍类型
  2527. trim(b.ZIPCODE) as ZIPCODE,--邮编
  2528. trim(b.PHONE) as PHONE,--电话
  2529. trim(b.MOBILE) as MOBILE,--手机
  2530. trim(b.EMAIL) as EMAIL,--邮箱
  2531. regexp_replace(trim(b.POSTALADDRESS),'[0-90-9]','*') as POSTALADDRESS, --联系地址
  2532. regexp_extract(b.POSTALADDRESS,'(.*?)省|(.*?)市',0) -- 省份
  2533. from dsj.t_customer_class b
  2534. where b.CUSTOMER_ID = a.scustid
  2535. ) WHERE 1=1 ;
  2536. dbms_output.put_line('up_t_customers_class_1函数跑批完成!');
  2537. EXCEPTION
  2538. WHEN HIVE_EXCEPTION THEN
  2539. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2540. WHEN Others THEN
  2541. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2542. END;
  2543. CREATE OR REPLACE PROCEDURE shanglifeecif.update_customerno_salecom_relation_labels() IS
  2544. -- 标签值分渠道计算,并将计算结果存入shanglifeecif.customerno_salecom_relation表
  2545. -- 该表不存储跟渠道的标签值(也就是”上海人寿“渠道),只存储下面子渠道的标签值
  2546. BEGIN
  2547. -- 1. 是否持有寿险有效保单 label24
  2548. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label24 = '持有寿险有效保单' WHERE exists (
  2549. 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 = '人寿保险')
  2550. );
  2551. -- 2. 保单件数区间 label25 参考bdnum_distribution.sql : 4行
  2552. -- 在 shanglifeecif.bdnum_distribution() 中处理
  2553. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label25 = (
  2554. select
  2555. CASE
  2556. WHEN t.n = 0 THEN '无保单'
  2557. WHEN t.n = 1 THEN '1件保单'
  2558. WHEN t.n = 2 THEN '2件保单'
  2559. WHEN t.n between 3 and 5 THEN '3-5件保单'
  2560. WHEN t.n between 6 and 10 THEN '6-10件保单'
  2561. WHEN t.n between 11 and 20 THEN '11-20件保单'
  2562. WHEN t.n between 21 and 50 THEN '21-50件保单'
  2563. WHEN t.n > 50 THEN '50件保单以上'
  2564. END
  2565. from (
  2566. SELECT customerno, salecom, count(1) as n FROM dsj.policy_information p WHERE appflag IS NOT NULL group by customerno, salecom
  2567. ) t
  2568. where
  2569. si1.scustid = t.customerno
  2570. and si1.salecom = t.salecom
  2571. );
  2572. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET (
  2573. -- si1.NOVPolicy -- 有效保单数
  2574. -- , si1.noivpolicy -- 无效保单数
  2575. -- , si1.Label25 --总保单数
  2576. -- ) = (
  2577. -- SELECT
  2578. -- valid_num
  2579. -- , invalid_num
  2580. -- , total
  2581. -- FROM (
  2582. -- SELECT
  2583. -- customerno
  2584. -- , salecom
  2585. -- , sum(CASE WHEN appflag = '有效' THEN 1 ELSE 0 end) AS valid_num -- 有效保单数
  2586. -- , sum(CASE WHEN appflag <> '有效' THEN 1 ELSE 0 end) AS invalid_num -- 无效保单数
  2587. -- , count(1) AS total --总保单数
  2588. -- FROM (
  2589. -- SELECT customerno, salecom, contno, appflag
  2590. -- FROM dsj.policy_information p WHERE appflag IS NOT NULL GROUP BY customerno, salecom, contno, appflag
  2591. -- ) t
  2592. -- GROUP BY customerno, salecom
  2593. -- ) s
  2594. -- WHERE si1.scustid = s.customerno AND si1.salecom = s.salecom
  2595. -- )
  2596. -- WHERE 1 = 1;
  2597. -- 3. 是否贷款 label26
  2598. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label26 = '有保单贷款' WHERE exists (
  2599. 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 (
  2600. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  2601. )
  2602. );
  2603. -- 4. 是否有极短意保单 label27
  2604. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  2605. -- SELECT
  2606. -- CASE
  2607. -- WHEN t.cnt > 0 AND t.cnt = t.tnum THEN '仅极短意外险'
  2608. -- WHEN t.cnt > 0 AND t.cnt <> t.tnum THEN '有极短意外险'
  2609. -- END
  2610. -- FROM (
  2611. -- SELECT
  2612. -- po.customerno
  2613. -- , po.salecom
  2614. -- , SUM(
  2615. -- CASE
  2616. -- WHEN
  2617. -- po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2618. -- AND po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2619. -- THEN 1
  2620. -- ELSE 0
  2621. -- END
  2622. -- ) AS cnt
  2623. -- , COUNT(1) AS tnum
  2624. -- FROM dsj.policy_information po
  2625. -- WHERE
  2626. -- po.riskperiod='短期险'
  2627. -- GROUP BY customerno, salecom
  2628. -- ) t
  2629. -- WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2630. -- );
  2631. --------------
  2632. -- 4. 是否有极短意保单 label27(方式二)
  2633. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  2634. SELECT
  2635. CASE
  2636. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  2637. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  2638. END
  2639. FROM (
  2640. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2641. SELECT
  2642. count(1) cnt
  2643. , po.customerno
  2644. , po.salecom
  2645. FROM
  2646. dsj.policy_information po
  2647. where
  2648. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  2649. and
  2650. po.riskperiod='短期险'
  2651. and
  2652. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2653. GROUP BY
  2654. po.customerno, po.salecom
  2655. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and p.salecom = t.salecom GROUP BY p.customerno, p.salecom
  2656. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2657. );
  2658. -- 5. 是否有趸交保单 Label29
  2659. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label29 = '有趸交保单' WHERE exists (
  2660. SELECT p.customerno FROM dsj.policy_information p, dsj.PREMIUM_LIST l
  2661. 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 '%一次交清%'
  2662. );
  2663. -- 6. 是否给本人投保 Label30
  2664. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label30 = (
  2665. SELECT
  2666. CASE
  2667. WHEN tt.bnum = 0 THEN '本人未投保'
  2668. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  2669. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  2670. END
  2671. FROM (
  2672. SELECT t.customerno, t.salecom, MAX(t.bnum) bnum, count(*) as tnum FROM (
  2673. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno, p.salecom
  2674. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2675. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2676. );
  2677. -- 7. 是否给父母投保 Label31
  2678. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label31 = (
  2679. SELECT
  2680. CASE
  2681. WHEN tt.bnum = 0 THEN '父母未投保'
  2682. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  2683. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  2684. END
  2685. FROM (
  2686. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2687. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  2688. 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. -- 8. 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  2693. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label32 = (
  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 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
  2703. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2704. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2705. );
  2706. -- 9. 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  2707. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label33 = (
  2708. SELECT
  2709. CASE
  2710. WHEN tt.bnum = 0 THEN '配偶未投保'
  2711. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  2712. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  2713. END
  2714. FROM (
  2715. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  2716. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno, p.salecom
  2717. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  2718. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  2719. );
  2720. -- 10. 是否仅有1年期短险保单 Label43
  2721. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label43 = (
  2722. SELECT
  2723. CASE
  2724. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  2725. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  2726. END
  2727. FROM (
  2728. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  2729. SELECT
  2730. count(1) cnt,
  2731. po.customerno,
  2732. po.salecom
  2733. FROM
  2734. dsj.policy_information po
  2735. where
  2736. po.SECURITY in('1年','6月','180天')
  2737. and
  2738. po.riskperiod='短期险'
  2739. and
  2740. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  2741. GROUP BY
  2742. po.customerno, po.salecom
  2743. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and t.salecom = p.salecom GROUP BY p.customerno, p.salecom
  2744. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2745. );
  2746. -- 11. 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  2747. -- 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')
  2748. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label44 = '有失效保单' WHERE exists (
  2749. 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' )
  2750. );
  2751. -- 12. 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  2752. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label45 = '有缴费期满长险保单' WHERE exists (
  2753. 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='长期险'
  2754. );
  2755. -- 13. 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  2756. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label46 = '有续期缴费保单' WHERE exists (
  2757. 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 (
  2758. select otherno from dsj.ljspay where othernotype = '2'
  2759. )
  2760. );
  2761. -- 14. 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  2762. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label47 = '有责任期满的保单' WHERE exists (
  2763. 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")
  2764. );
  2765. -- 15. 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  2766. --第一步
  2767. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  2768. SELECT fadate FROM (
  2769. 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
  2770. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2771. );
  2772. -- 第二步
  2773. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  2774. SELECT fadate FROM (
  2775. 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
  2776. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  2777. );
  2778. -- 第三步
  2779. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  2780. -- 16. 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  2781. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  2782. SELECT fadate FROM (
  2783. 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
  2784. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  2785. );
  2786. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  2787. SELECT fadate FROM (
  2788. 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
  2789. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  2790. );
  2791. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  2792. /*
  2793. * 二期分渠道计算标签值时这两个标签只有根渠道显示(也就是”上海人寿“渠道),其他渠道不展示
  2794. -- 17. 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  2795. -- 原始逻辑
  2796. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  2797. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  2798. WHERE p.salecomname IS NOT null
  2799. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2800. -- 18. 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  2801. -- 原始逻辑
  2802. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  2803. 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
  2804. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  2805. */
  2806. -- 19. 最近保单状态 Label54
  2807. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label54 = (
  2808. SELECT '最近保单状态'||trim(t.appflag) FROM (
  2809. 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
  2810. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno AND si1.salecom = t.salecom
  2811. );
  2812. -- 20. 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  2813. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label55 = (
  2814. SELECT '客户最近一次办理'||t.edorname FROM (
  2815. SELECT
  2816. row_number() over(partition by p.customerno, p.salecom ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  2817. l.edortype,
  2818. l.contno,
  2819. p.customerno,
  2820. p.salecom,
  2821. l.edorappdate,
  2822. l.edorstate,
  2823. lm.edorcode,
  2824. lm.edorname
  2825. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  2826. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  2827. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  2828. ) WHERE 1 = 1;
  2829. -- 21. 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  2830. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label56 = '有退保保单' WHERE exists (
  2831. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  2832. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  2833. )
  2834. );
  2835. -- 22. 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  2836. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label57 = (
  2837. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  2838. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE, p.salecom
  2839. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  2840. WHERE c.contno = p.contno
  2841. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2842. );
  2843. -- 23. 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  2844. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label58 = (
  2845. SELECT "最近一次出险类型" || t.lloccurreason FROM (
  2846. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.lloccurreason, p.salecom
  2847. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  2848. WHERE c.contno = p.contno
  2849. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2850. );
  2851. -- 24. 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  2852. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label59 = (
  2853. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  2854. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE, p.salecom
  2855. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p WHERE c.contno = p.contno
  2856. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  2857. );
  2858. -- 25. 是否有满期给付保单 Label61 有满期给付保单
  2859. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label61 = '有满期给付保单' WHERE exists (
  2860. SELECT p.customerno FROM dsj.policy_information p WHERE si1.scustid = p.customerno and si1.salecom = p.salecom and p.contno IN (
  2861. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  2862. )
  2863. );
  2864. -- 26. 是否有生存金给付的保单 Label62 有生存金给付保单 无
  2865. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label62 = '有生存金给付的保单' WHERE exists (
  2866. 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 (
  2867. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  2868. )
  2869. );
  2870. -- 27. 是否有红利可领取的保单 Label64 有红利可领取保单 无
  2871. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label64 = '红利可领取的保单' WHERE exists (
  2872. SELECT p.customerno FROM dsj.policy_information p, dsj.lmriskapp l
  2873. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1
  2874. );
  2875. -- 28. 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  2876. /*
  2877. 一张保单对应一个保单号 contno,但表里会有重复保单号,因为一个保单会包含多个险种 riskcode,包含了几个险种就会有几条重复记录。
  2878. 如果客户只购买了一张保单,不管保单中包含多少个险种,只要包含“新型寿险”或“人寿保险”险种就认为是一单寿险客户
  2879. */
  2880. /*
  2881. -- 旧方法,性能低
  2882. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (SELECT temp.customerno FROM (
  2883. SELECT pi.customerno, pi.salecom, count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  2884. SELECT count(DISTINCT p.contno) AS pnum, p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  2885. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  2886. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno, p.salecom
  2887. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  2888. GROUP BY pi.customerno, pi.salecom
  2889. )temp WHERE temp.tnum = temp.pnum AND tnum = 1 and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  2890. */
  2891. ----------- 方法二
  2892. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (
  2893. SELECT
  2894. customerno
  2895. , salecom
  2896. , count(DISTINCT contno) AS c -- 保单号去重后统计该客户总共有多少保单
  2897. , sum(
  2898. CASE
  2899. WHEN b.kindtype IN ('人寿保险', '新型寿险') THEN 1
  2900. ELSE 0
  2901. END
  2902. ) AS s -- 统计寿险有几条记录
  2903. FROM dsj.POLICY_INFORMATION p, dsj.riskkind b
  2904. WHERE p.riskcode = b.riskcode AND p.customerno = si1.scustid AND p.salecom = si1.salecom
  2905. GROUP BY customerno, salecom
  2906. HAVING c = 1 AND s > 0 -- 筛选只有一个保单且包含寿险的客户
  2907. );
  2908. -- 29. 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  2909. /*
  2910. -- 旧方法,性能低
  2911. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  2912. SELECT temp.customerno FROM (
  2913. SELECT count(*) AS tnum, t.customerno, t.salecom, max(t.pnum) AS pnum FROM (
  2914. SELECT p.customerno, p.salecom, count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno, p.salecom
  2915. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  2916. GROUP BY t.customerno, t.salecom
  2917. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom
  2918. );
  2919. */
  2920. --------------- 方法二
  2921. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  2922. SELECT
  2923. p.customerno
  2924. , p.salecom
  2925. -- , count(1) AS c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  2926. , sum(
  2927. case
  2928. when p.paycount = p.payendyear then 1
  2929. else 0
  2930. end
  2931. ) AS s
  2932. FROM dsj.policy_information p
  2933. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom
  2934. GROUP BY p.customerno, p.salecom
  2935. HAVING count(1) = s
  2936. );
  2937. -- 30. 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  2938. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label68 = '持有有效保单' WHERE exists (
  2939. SELECT salecom FROM dsj.POLICY_INFORMATION p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom
  2940. );
  2941. -- 31. 父母生日提醒 Label78 父亲生日临近 | 母亲生日临近 客户父母生日-当前日期<=5
  2942. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label78 = (
  2943. SELECT
  2944. case max(p.insuredsdeleteex)
  2945. when '0' then '父亲生日临近'
  2946. when '1' then '母亲生日临近'
  2947. end as s
  2948. from dsj.POLICY_INFORMATION p
  2949. where p.customerno = si1.scustid and p.salecom = si1.salecom
  2950. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday > p.insuredbirthday -- 父母关系,并且投保人 > 被保人(也就是晚辈给长辈买保险,被保人是长辈)
  2951. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  2952. );
  2953. -- 32. 子女生日提醒 Label79 儿子生日临近 | 女儿生日临近 客户子女生日-当前日期<=5
  2954. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label79 = (
  2955. SELECT
  2956. case max(p.insuredsex)
  2957. when '0' then '儿子生日临近'
  2958. when '1' then '女儿生日临近'
  2959. end as s
  2960. from dsj.POLICY_INFORMATION p
  2961. where p.customerno = si1.scustid and p.salecom = si1.salecom
  2962. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday < p.insuredbirthday -- 父母关系,并且投保人 < 被保人(也就是长辈给晚辈买保险,被保人是晚辈)
  2963. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  2964. );
  2965. -- 33. 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2966. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label81 = '近期咨询过理赔' WHERE exists (
  2967. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.customerno = si1.scustid and dp.salecom = si1.salecom and dp.contno IN (
  2968. SELECT rm.contnos FROM dsj.cc_record_main rm
  2969. WHERE rm.reasonsecondname LIKE '%理赔%' and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2970. );
  2971. -- 34. 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2972. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label88 = '续期临期未缴费' WHERE exists (
  2973. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2974. 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
  2975. and p.customerno = si1.scustid and p.salecom = si1.salecom
  2976. );
  2977. -- 35. 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2978. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label89 = '续期到期未缴费' WHERE exists (
  2979. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2980. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2981. and p.customerno = si1.scustid and p.salecom = si1.salecom
  2982. );
  2983. -- 36. 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2984. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE exists (SELECT temp.customerno FROM (
  2985. SELECT count(*) AS tnum,max(t.customerno) AS customerno, max(t.salecom) as salecom,max(t.pnum) AS pnum FROM (
  2986. SELECT p.customerno, p.salecom,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno, p.salecom
  2987. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  2988. GROUP BY pi.customerno, pi.salecom
  2989. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  2990. /*
  2991. -- 方法二(性能反而慢,原因待查)
  2992. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE EXISTS (
  2993. SELECT
  2994. p.customerno
  2995. , p.salecom
  2996. -- , count(1) as c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  2997. , sum(
  2998. case
  2999. when p.appflag <> '有效' then 1
  3000. else 0
  3001. end
  3002. ) as s
  3003. from dsj.policy_information p
  3004. where p.customerno = si1.scustid and p.salecom = si1.salecom
  3005. group by p.customerno, p.salecom
  3006. having count(1) = s
  3007. );
  3008. */
  3009. -- 37. 失效原因 Label92
  3010. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label92 = (
  3011. SELECT '有'||t.terminatestate||'保单' FROM (
  3012. 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
  3013. WHERE p.appflag = '中止'
  3014. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  3015. );
  3016. -- 38. 终止原因 Label94
  3017. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label94 = (
  3018. SELECT '有'||t.terminatestate||'保单' FROM (
  3019. 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
  3020. WHERE p.appflag = '终止'
  3021. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  3022. );
  3023. -- 39. 上年续期交费情况 Label95
  3024. -- 通过contno与dsj.policy_information表关联会有关联不上的数据,关联不上的数据不做处理
  3025. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label95 = (
  3026. SELECT
  3027. CASE
  3028. WHEN t.dnum=0 THEN '上一年如期缴费'
  3029. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  3030. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  3031. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  3032. END
  3033. FROM (
  3034. SELECT
  3035. 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
  3036. FROM dsj.ljapayperson l, dsj.policy_information p WHERE p.contno = l.contno and l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  3037. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid and t.salecom = si1.salecom
  3038. );
  3039. -- 40. 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  3040. -- 二期只计算这3个渠道
  3041. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  3042. --02个险渠道 期缴 大于20000以上
  3043. --03银保渠道 期缴 大于50000以上
  3044. --06健康险 期缴 大于 20000以上
  3045. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label107 = '高金额' WHERE exists (
  3046. SELECT p.customerno FROM dsj.policy_information p WHERE
  3047. p.appflag = '有效' AND p.payintv = '期缴' and
  3048. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000))
  3049. and p.customerno = si1.scustid and p.salecom = si1.salecom
  3050. );
  3051. -- 41. 最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  3052. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label108 = '最近理赔结案' WHERE exists (
  3053. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  3054. WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  3055. and p.contno = c.contno and c.insuredno = si1.scustid and p.salecom = si1.salecom
  3056. );
  3057. -- 42. 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  3058. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label109 = '理赔报案追踪' WHERE exists (
  3059. 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 (
  3060. SELECT c.CONTNO FROM dsj.insurance_claim c WHERE c.LLCLAIMSTATE = '报案' AND DATEDIFF(sysdate(), c.RPTDATE) <30
  3061. )
  3062. );
  3063. -- 43. 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  3064. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label110 = '理赔处理中' WHERE exists (
  3065. 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 (
  3066. SELECT c.contno FROM dsj.INSURANCE_CLAIM c WHERE c.llclaimstate = '受理' OR c.llclaimstate = '立案'
  3067. )
  3068. );
  3069. -- 44. 最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  3070. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label111 = '最近保全完成' WHERE exists (
  3071. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  3072. 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'
  3073. )
  3074. );
  3075. -- 45. 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  3076. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label113 = '生存金未领' WHERE exists (
  3077. 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 (
  3078. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  3079. )
  3080. );
  3081. -- 46. 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  3082. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label115 = '红利垫缴还款' WHERE exists (
  3083. 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 (
  3084. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  3085. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  3086. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  3087. )
  3088. );
  3089. -- 47. 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  3090. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label117 = '宽限期' WHERE exists (
  3091. SELECT p.customerno FROM dsj.policy_information p WHERE
  3092. p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  3093. 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
  3094. and p.customerno = si1.scustid and p.salecom = si1.salecom
  3095. );
  3096. --48. 重点银行 Label120 重点银行
  3097. -- 二期只计算银保渠道(03)
  3098. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label120 = '重点银行' WHERE exists (
  3099. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and si1.salecom = '03' and p.AGENTCOM LIKE '%招商银行%'
  3100. );
  3101. dbms_output.put_line('update_customerno_salecom_relation_labels 函数跑批完成!');
  3102. EXCEPTION
  3103. WHEN HIVE_EXCEPTION THEN
  3104. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3105. WHEN Others THEN
  3106. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3107. END;
  3108. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuranceclaimthread_add_salecom()
  3109. IS
  3110. BEGIN
  3111. UPDATE shanglifeecif.insuranceclaimthread insd
  3112. SET (
  3113. insd.SALECOM,
  3114. insd.salecomname
  3115. )
  3116. =(SELECT t.salecom , t.salecomname FROM
  3117. (
  3118. SELECT
  3119. contno, salecom , salecomname
  3120. FROM dsj.policy_information t
  3121. GROUP BY contno , salecom , salecomname
  3122. ) t WHERE t.contno = insd.policyno
  3123. -- AND t.contno in('2019012400157198','2019071600119318')
  3124. )
  3125. dbms_output.put_line('update_insuranceclaimthread add saleCome 函数跑批完成!');
  3126. EXCEPTION
  3127. WHEN HIVE_EXCEPTION THEN
  3128. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3129. WHEN Others THEN
  3130. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3131. END;
  3132. CREATE OR REPLACE PROCEDURE shanglifeecif.update_insuredinfo()
  3133. IS
  3134. BEGIN
  3135. --更新被保人信息
  3136. UPDATE shanglifeecif.individual a SET (
  3137. ZIPCODE,--邮编
  3138. HPhone,--电话
  3139. PMPhone,--手机
  3140. email, -- 邮箱
  3141. RAL, --联系地址
  3142. sobirth --省份
  3143. ) = (
  3144. SELECT
  3145. t.zipcode,
  3146. t.phone,
  3147. t.mobile,
  3148. t.email,
  3149. regexp_replace(trim(t.address),'[0-9]','*') address,
  3150. regexp_extract(t.address,'(.*?)省|(.*?)市',0) province
  3151. FROM (
  3152. SELECT
  3153. row_number()OVER(PARTITION BY ls.customerno ORDER BY ls.modifydate desc) rn,
  3154. ls.customerno,--客户号
  3155. CASE
  3156. WHEN ls.postaladdress IS NULL
  3157. THEN
  3158. CASE WHEN ls.homeaddress IS NULL THEN ls.companyaddress ELSE ls.homeaddress END
  3159. ELSE ls.postaladdress
  3160. END AS address,
  3161. ls.phone,
  3162. ls.zipcode,--邮编
  3163. CASE WHEN ls.email IS NULL THEN ls.email2 ELSE ls.email END AS email,
  3164. CASE WHEN ls.mobile IS NULL THEN ls.mobile2 ELSE ls.mobile END AS mobile
  3165. FROM dsj.lcaddress ls
  3166. ) t where t.rn = 1 AND t.customerno = a.scustid
  3167. ) WHERE a.custtype = '被保人';
  3168. UPDATE shanglifeecif.individual a SET (
  3169. Height, --身高
  3170. Weight, --体重
  3171. BMI,
  3172. PIncome, --个人年收入
  3173. Ethnic, --民族情况
  3174. Nation, --国籍
  3175. MaritalStat, --婚姻
  3176. Education,--学历
  3177. SIStatus,--社保
  3178. IncomeSource,--收入来源
  3179. Occupation,--职业
  3180. regtype --户籍类型
  3181. ) = (
  3182. SELECT
  3183. t.stature,--身高
  3184. t.avoirdupois,--体重
  3185. t.bmi,
  3186. t.yearincome,
  3187. t.nationality,--民族
  3188. t.nativeplace,--国籍
  3189. t.marriage, --婚姻状况
  3190. t.degree, --学历
  3191. t.socialinsuflag,--社保
  3192. t.incomesource,--收入来源
  3193. t.occupationcode,--职业
  3194. t.dentype
  3195. FROM (
  3196. SELECT
  3197. row_number()OVER(PARTITION BY ld.insuredno ORDER BY ld.modifydate desc) rn,
  3198. ld.insuredno,--被保人客户号
  3199. ld.appntno,--投保人客户号
  3200. ld.name,--被保人名称
  3201. ld.sex,--被保人性别
  3202. ld.birthday,--被保人出生日期
  3203. ld.idtype,--证件类型
  3204. ld.idno,--证件号码
  3205. ld.marriage,--婚姻状况
  3206. ld.occupationcode,--职业
  3207. ld.nativeplace,--国籍
  3208. ld.nationality,--民族
  3209. ld.stature,--身高
  3210. ld.avoirdupois,--体重
  3211. round((ld.avoirdupois/POWER((ld.stature/100),2)),2) bmi,
  3212. ld.degree,--学历
  3213. ld.dentype,--居民类型
  3214. ld.socialinsuflag,--社保情况
  3215. ld.incomesource,--收入来源
  3216. ld.yearincome --年收入
  3217. FROM dsj.lcinsured2 ld
  3218. ) t WHERE t.rn = 1 AND t.insuredno = a.scustid
  3219. ) WHERE a.custtype = '被保人';
  3220. dbms_output.put_line('update_insuredinfo函数跑批完成!');
  3221. EXCEPTION
  3222. WHEN HIVE_EXCEPTION THEN
  3223. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3224. WHEN Others THEN
  3225. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3226. END;
  3227. CREATE OR REPLACE PROCEDURE shanglifeecif.update_partytimeline_add_salecom()
  3228. IS
  3229. BEGIN
  3230. UPDATE shanglifeecif.partytimeline pt SET (pt.salecom,pt.salecomname) =
  3231. (
  3232. SELECT t.salecom, t.salecomname FROM
  3233. (
  3234. SELECT
  3235. contno, salecom, salecomname
  3236. FROM dsj.policy_information t
  3237. GROUP BY contno, salecom, salecomname
  3238. ) t WHERE t.contno = pt.policyno
  3239. )
  3240. dbms_output.put_line('update_partytimeline_add_salecom 函数跑批完成!');
  3241. EXCEPTION
  3242. WHEN HIVE_EXCEPTION THEN
  3243. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3244. WHEN Others THEN
  3245. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3246. END;
  3247. CREATE OR REPLACE PROCEDURE shanglifeecif.update_risk_categories() -- 创建主存储过程
  3248. IS
  3249. BEGIN
  3250. --更新险种大类
  3251. UPDATE shanglifeecif.insurancearrangement a SET (
  3252. risk_categories_name
  3253. ) = (
  3254. select
  3255. kindtype
  3256. from dsj.riskkind b WHERE a.productid = b.riskcode
  3257. ) WHERE 1=1;
  3258. dbms_output.put_line('update_risk_categories函数跑批完成!');
  3259. EXCEPTION
  3260. WHEN HIVE_EXCEPTION THEN
  3261. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3262. WHEN Others THEN
  3263. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  3264. END;
  3265. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  3266. DECLARE
  3267. BEGIN
  3268. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  3269. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  3270. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  3271. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  3272. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  3273. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  3274. --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 '老年'" 儿童、少年、青年、中年、老年
  3275. --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);
  3276. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  3277. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  3278. --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离异
  3279. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  3280. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  3281. --case si1.maritalStat
  3282. --when 1 then '未婚'
  3283. --when 2 then '已婚'
  3284. --when 3 then '丧偶'
  3285. --when 4 then '离异'
  3286. --else NULL END
  3287. --) WHERE 1 = 1;
  3288. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  3289. --else null" 无子女、1孩、2孩及以上
  3290. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  3291. SELECT nvl(t.cnum,0) FROM (
  3292. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  3293. WHERE si.rstype = '子女' GROUP BY si.indid1
  3294. ) t WHERE t.indid1 = si1.scustid
  3295. ) ;
  3296. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  3297. case
  3298. when si1.COChild=0 then '无子女'
  3299. when si1.COChild=1 then '1孩'
  3300. when si1.COChild>=2 then '2孩及以上'
  3301. else null END
  3302. ) WHERE si1.cochild is not null;
  3303. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  3304. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  3305. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  3306. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  3307. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  3308. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  3309. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  3310. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  3311. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  3312. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  3313. --根据数据判断单位应该是万元,这里都除以10000做判断
  3314. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  3315. CASE
  3316. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  3317. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  3318. WHEN si1.pincome > 100 THEN '富人'
  3319. else null END
  3320. ) where 1 = 1;
  3321. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  3322. --else null" 无车,1辆车,2辆车及以上
  3323. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  3324. CASE
  3325. WHEN si1.COVehicle ==0 THEN '无车'
  3326. WHEN si1.COVehicle == 1 THEN '1辆车'
  3327. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  3328. ELSE NULL END
  3329. ) where 1 = 1;
  3330. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  3331. --else null" 无房,1套房,2套房及以上
  3332. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  3333. CASE
  3334. WHEN si1.CORP ==0 THEN '无房'
  3335. WHEN si1.CORP == 1 THEN '1套房'
  3336. WHEN si1.CORP > 1 THEN '2套房以上'
  3337. else null END
  3338. ) where 1 = 1;
  3339. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  3340. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  3341. (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 = '人寿保险'));
  3342. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  3343. --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件'
  3344. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  3345. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  3346. --第一步 更新 Individual.NOVPolicy 有效记录数
  3347. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  3348. --SELECT temp.customerno,count(*) AS cnum FROM (
  3349. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  3350. --) temp GROUP BY temp.customerno
  3351. --) t WHERE t.customerno = si1.scustid);
  3352. --第二步 更新 Individual.NOIVPolicy 无效记录数
  3353. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  3354. --SELECT temp.customerno,count(*) AS cnum FROM (
  3355. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  3356. --) temp GROUP BY temp.customerno
  3357. --) t WHERE t.customerno = si1.scustid);
  3358. --第三步
  3359. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  3360. --CASE
  3361. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  3362. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  3363. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  3364. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  3365. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  3366. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  3367. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  3368. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  3369. --END ) where 1 = 1;
  3370. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  3371. --CASE
  3372. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  3373. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  3374. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  3375. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  3376. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  3377. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  3378. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  3379. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  3380. --END
  3381. --) where 1 = 1;
  3382. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  3383. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  3384. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  3385. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  3386. )
  3387. );
  3388. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  3389. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  3390. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  3391. SELECT
  3392. CASE
  3393. WHEN temp.cnt >0 THEN
  3394. '有极短意外险'
  3395. END
  3396. FROM
  3397. (
  3398. SELECT
  3399. count(1) cnt,
  3400. policy.customerno
  3401. FROM
  3402. policy_information policy
  3403. where
  3404. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  3405. and
  3406. policy.riskperiod='短期险'
  3407. and
  3408. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3409. GROUP BY
  3410. policy.customerno
  3411. ) temp
  3412. WHERE temp.customerno = si1.scustid
  3413. );*/
  3414. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  3415. SELECT
  3416. CASE
  3417. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  3418. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  3419. END
  3420. FROM (
  3421. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  3422. SELECT
  3423. count(1) cnt,
  3424. po.customerno
  3425. FROM
  3426. dsj.policy_information po
  3427. where
  3428. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  3429. and
  3430. po.riskperiod='短期险'
  3431. and
  3432. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3433. GROUP BY
  3434. po.customerno
  3435. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  3436. ) temp where temp.customerno = si1.scustid
  3437. );
  3438. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  3439. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  3440. 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 '%一次交清%')
  3441. );
  3442. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  3443. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  3444. SELECT
  3445. CASE
  3446. WHEN tt.bnum = 0 THEN '本人未投保'
  3447. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  3448. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  3449. END
  3450. FROM (
  3451. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3452. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno
  3453. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3454. ) tt WHERE tt.customerno = si1.scustid
  3455. );
  3456. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  3457. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  3458. SELECT
  3459. CASE
  3460. WHEN tt.bnum = 0 THEN '父母未投保'
  3461. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  3462. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  3463. END
  3464. FROM (
  3465. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3466. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  3467. 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. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  3472. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  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 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
  3482. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3483. ) tt WHERE tt.customerno = si1.scustid
  3484. );
  3485. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  3486. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  3487. SELECT
  3488. CASE
  3489. WHEN tt.bnum = 0 THEN '配偶未投保'
  3490. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  3491. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  3492. END
  3493. FROM (
  3494. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  3495. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno
  3496. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  3497. ) tt WHERE tt.customerno = si1.scustid
  3498. );
  3499. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  3500. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  3501. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  3502. SELECT
  3503. CASE
  3504. WHEN temp.cnt >0 THEN
  3505. '有1年期短险保单'
  3506. END
  3507. FROM
  3508. (
  3509. SELECT
  3510. count(1) cnt,
  3511. policy.customerno
  3512. FROM
  3513. policy_information policy
  3514. where
  3515. policy.SECURITY in('1年','6月','180天')
  3516. and
  3517. policy.riskperiod='短期险'
  3518. and
  3519. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3520. GROUP BY
  3521. policy.customerno
  3522. ) temp
  3523. WHERE
  3524. temp.customerno = si1.scustid
  3525. );*/
  3526. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  3527. SELECT
  3528. CASE
  3529. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  3530. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  3531. END
  3532. FROM (
  3533. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  3534. SELECT
  3535. count(1) cnt,
  3536. po.customerno
  3537. FROM
  3538. dsj.policy_information po
  3539. where
  3540. po.SECURITY in('1年','6月','180天')
  3541. and
  3542. po.riskperiod='短期险'
  3543. and
  3544. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  3545. GROUP BY
  3546. po.customerno
  3547. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  3548. ) temp where temp.customerno = si1.scustid
  3549. );
  3550. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  3551. -- 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')
  3552. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  3553. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' )
  3554. );
  3555. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  3556. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  3557. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  3558. );
  3559. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  3560. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  3561. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  3562. select otherno from dsj.ljspay where othernotype = '2'
  3563. )
  3564. );
  3565. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  3566. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  3567. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  3568. );
  3569. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  3570. --第一步
  3571. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  3572. SELECT fadate FROM (
  3573. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  3574. ) t WHERE t.customerno = si1.scustid
  3575. );
  3576. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  3577. SELECT fadate FROM (
  3578. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  3579. ) t WHERE t.insuredno = si1.scustid
  3580. );
  3581. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  3582. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  3583. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  3584. SELECT fadate FROM (
  3585. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  3586. ) t WHERE t.customerno = si1.scustid
  3587. );
  3588. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  3589. SELECT fadate FROM (
  3590. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  3591. ) t WHERE t.insuredno = si1.scustid
  3592. );
  3593. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  3594. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  3595. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  3596. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  3597. WHERE p.salecomname IS NOT null
  3598. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3599. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  3600. --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
  3601. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3602. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  3603. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  3604. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  3605. -- 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
  3606. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3607. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  3608. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  3609. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  3610. 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
  3611. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3612. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  3613. --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
  3614. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3615. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  3616. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  3617. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  3618. -- 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
  3619. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  3620. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  3621. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  3622. /*
  3623. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  3624. (SELECT
  3625. (CASE temp.appflag
  3626. WHEN '0' THEN '最近保单状态未承保'
  3627. WHEN '1' THEN '最近保单状态承保'
  3628. WHEN '2' THEN '最近保单状态新增附加险'
  3629. WHEN '4' THEN '最近保单状态终止'
  3630. WHEN '9' THEN '最近保单状态续保'
  3631. WHEN 'B' THEN '最近保单状态未对账'
  3632. WHEN 'F' THEN '最近保单状态对账失败'
  3633. END) a
  3634. FROM (
  3635. 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
  3636. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  3637. */
  3638. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  3639. SELECT '最近保单状态'||trim(t.appflag) FROM (
  3640. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  3641. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  3642. );
  3643. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  3644. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  3645. SELECT '客户最近一次办理'||t.edorname FROM (
  3646. SELECT
  3647. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  3648. l.edortype,
  3649. l.contno,
  3650. p.customerno,
  3651. l.edorappdate,
  3652. l.edorstate,
  3653. lm.edorcode,
  3654. lm.edorname
  3655. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  3656. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  3657. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3658. ) WHERE 1 = 1;
  3659. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  3660. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  3661. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3662. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  3663. )
  3664. );
  3665. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  3666. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  3667. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  3668. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  3669. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3670. );
  3671. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  3672. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  3673. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  3674. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  3675. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3676. );
  3677. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  3678. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  3679. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  3680. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  3681. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  3682. );
  3683. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  3684. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  3685. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  3686. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3687. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  3688. )
  3689. );
  3690. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  3691. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  3692. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  3693. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3694. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  3695. ) and p.appflag = '有效'
  3696. );
  3697. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  3698. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  3699. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  3700. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  3701. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3702. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  3703. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  3704. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  3705. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  3706. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  3707. GROUP BY pi.customerno
  3708. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  3709. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  3710. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  3711. SELECT temp.customerno FROM (
  3712. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3713. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  3714. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3715. GROUP BY pi.customerno
  3716. ) temp WHERE temp.tnum = temp.pnum
  3717. );
  3718. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  3719. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  3720. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  3721. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  3722. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  3723. WHERE p.appflag = '有效' GROUP BY p.customerno
  3724. ) t WHERE t.pnum > 0);
  3725. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  3726. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  3727. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  3728. CASE si1.CustClass
  3729. WHEN 1 THEN '钻石客户'
  3730. WHEN 2 THEN '白金客户'
  3731. WHEN 3 THEN '黄金客户'
  3732. --WHEN 4 THEN '普通级别'
  3733. --ELSE '无级别'
  3734. ELSE ''
  3735. END
  3736. ) where 1 = 1;
  3737. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  3738. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  3739. SELECT '最近'||t.scenario FROM (
  3740. SELECT
  3741. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  3742. pl.partyid,
  3743. pl.scenario
  3744. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  3745. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  3746. );
  3747. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  3748. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  3749. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  3750. SELECT
  3751. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  3752. pl.partyid,
  3753. pl.scenario
  3754. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  3755. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  3756. );
  3757. --77 是否关注官微 Label73 关注官微 无 0
  3758. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  3759. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  3760. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  3761. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  3762. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  3763. --78 是否注册官微 Label74 注册官微 无 0
  3764. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  3765. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3766. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3767. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  3768. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  3769. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  3770. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3771. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3772. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  3773. );
  3774. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  3775. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3776. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3777. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  3778. );
  3779. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  3780. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  3781. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  3782. --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;
  3783. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  3784. SELECT scustid FROM (
  3785. SELECT * FROM (
  3786. 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
  3787. , day(to_date(birthday)) userday from shanglifeecif.Individual
  3788. )
  3789. WHERE
  3790. (nowmonth != nextmonth AND
  3791. (
  3792. (nowmonth== usermonth AND userday> nowday )
  3793. or (nextmonth == usermonth AND userday <= nextday )
  3794. )
  3795. )
  3796. OR (nowmonth == nextmonth AND nowmonth == usermonth AND userday > nowday AND userday <=nextday )
  3797. )
  3798. );
  3799. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' WHERE si1.scustid IN (
  3800. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3801. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3802. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '父亲'
  3803. );
  3804. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  3805. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3806. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3807. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  3808. );
  3809. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  3810. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  3811. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  3812. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  3813. );
  3814. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' 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. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  3820. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  3821. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  3822. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  3823. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  3824. );
  3825. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  3826. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  3827. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  3828. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  3829. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  3830. );
  3831. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  3832. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  3833. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  3834. 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
  3835. );
  3836. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  3837. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  3838. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  3839. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  3840. );
  3841. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  3842. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3843. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3844. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  3845. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3846. GROUP BY pi.customerno
  3847. ) temp WHERE temp.tnum = temp.pnum);
  3848. --失效原因
  3849. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  3850. SELECT '有'||t.terminatestate||'保单' FROM (
  3851. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  3852. WHERE p.appflag = '中止'
  3853. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3854. );
  3855. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  3856. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  3857. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  3858. --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
  3859. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  3860. --GROUP BY pi.customerno
  3861. --) temp WHERE temp.tnum = temp.pnum);
  3862. --终止原因
  3863. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  3864. SELECT '有'||t.terminatestate||'保单' FROM (
  3865. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  3866. WHERE p.appflag = '终止'
  3867. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  3868. );
  3869. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  3870. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3871. --SELECT
  3872. --CASE
  3873. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  3874. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  3875. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  3876. --END
  3877. -- FROM (
  3878. -- 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 (
  3879. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  3880. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  3881. -- ) t LEFT JOIN (
  3882. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  3883. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  3884. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  3885. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  3886. --) WHERE 1 = 1;
  3887. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3888. -- SELECT
  3889. -- CASE
  3890. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  3891. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  3892. -- WHEN t.dnum>60 THEN '宽限期外交费'
  3893. -- END
  3894. -- FROM (
  3895. -- 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
  3896. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  3897. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  3898. --) WHERE 1 = 1;
  3899. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  3900. SELECT
  3901. CASE
  3902. WHEN t.dnum=0 THEN '上一年如期缴费'
  3903. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  3904. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  3905. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  3906. END
  3907. FROM (
  3908. SELECT
  3909. 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
  3910. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  3911. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  3912. ) WHERE 1 = 1;
  3913. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  3914. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  3915. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3916. SELECT contnos from dsj.cc_record_main
  3917. )
  3918. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  3919. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  3920. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  3921. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3922. SELECT contnos from dsj.cc_record_main
  3923. )
  3924. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  3925. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  3926. 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;
  3927. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  3928. --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
  3929. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  3930. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  3931. SELECT '长通话' FROM (
  3932. SELECT
  3933. t.contnos,
  3934. row_number()OVER(PARTITION BY p.customerno) rn,
  3935. p.customerno
  3936. FROM (
  3937. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  3938. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  3939. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  3940. GROUP BY m.contnos
  3941. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  3942. WHERE t.avgcalltime>600
  3943. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  3944. );
  3945. --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%'" 每次来电均下转办单的
  3946. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  3947. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3948. SELECT temp.policyno FROM (
  3949. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  3950. 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
  3951. UNION
  3952. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  3953. )t GROUP BY t.policyno
  3954. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  3955. )
  3956. );
  3957. --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%'" 咨询转办单项目为投诉
  3958. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  3959. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  3960. SELECT temp.policyno FROM (
  3961. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  3962. 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
  3963. UNION
  3964. 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
  3965. )t GROUP BY t.policyno
  3966. ) temp WHERE temp.mnum = temp.fnum
  3967. )
  3968. );
  3969. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  3970. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  3971. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  3972. --(SELECT temp.productno FROM (
  3973. --SELECT t.productno,t.sinserttime,
  3974. --(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
  3975. --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
  3976. -- FROM
  3977. --(
  3978. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  3979. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  3980. --) t
  3981. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  3982. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  3983. SELECT t.customerno FROM (
  3984. SELECT
  3985. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  3986. t1.customerno,
  3987. t1.contno,
  3988. ca.inserttime FROM (
  3989. SELECT
  3990. max(p.customerno) customerno,
  3991. p.contno
  3992. FROM dsj.policy_information p GROUP BY p.contno
  3993. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  3994. ) t LEFT JOIN (
  3995. SELECT
  3996. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  3997. t1.customerno,
  3998. t1.contno,
  3999. ca.inserttime FROM (
  4000. SELECT
  4001. max(p.customerno) customerno,
  4002. p.contno
  4003. FROM dsj.policy_information p GROUP BY p.contno
  4004. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  4005. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  4006. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  4007. );
  4008. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  4009. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  4010. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  4011. SELECT
  4012. CASE
  4013. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  4014. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  4015. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  4016. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  4017. select group_concat((case c.complaintsSource
  4018. when '911' then '来电'
  4019. when '912' then '来访'
  4020. when '913' then '来函'
  4021. when '914' then '保监会转办'
  4022. when '919' then '保监局转办'
  4023. when '915' then '媒体转办'
  4024. when '916' then '同业公会'
  4025. when '917' then '其他转办'
  4026. when '918' then '呼出'
  4027. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  4028. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  4029. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  4030. ) tt WHERE tt.customerno = si1.scustid
  4031. );
  4032. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  4033. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  4034. --02个险渠道 期缴 大于20000以上
  4035. --03银保渠道 期缴 大于50000以上
  4036. --06健康险 期缴 大于 20000以上
  4037. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  4038. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  4039. p.appflag = '有效' AND p.payintv = '期缴' and
  4040. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  4041. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  4042. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  4043. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  4044. );
  4045. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  4046. 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) );
  4047. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  4048. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  4049. 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 = '立案')
  4050. );
  4051. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  4052. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  4053. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  4054. 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'
  4055. )
  4056. );
  4057. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  4058. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  4059. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  4060. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  4061. )
  4062. );
  4063. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  4064. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  4065. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  4066. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  4067. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  4068. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  4069. )
  4070. );
  4071. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  4072. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  4073. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  4074. 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
  4075. );
  4076. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  4077. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  4078. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  4079. dbms_output.put_line('updateindividuallable函数跑批完成!');
  4080. EXCEPTION
  4081. WHEN HIVE_EXCEPTION THEN
  4082. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  4083. WHEN Others THEN
  4084. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  4085. END