update.sql 140 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534
  1. CREATE OR REPLACE PROCEDURE shanglifeecif.init_customerno_salecom_relation() IS
  2. DECLARE
  3. BEGIN
  4. delete from shanglifeecif.customerno_salecom_relation;
  5. -- 用户 渠道关系表
  6. insert into shanglifeecif.customerno_salecom_relation (
  7. csrid,
  8. indid,
  9. custid,
  10. scustid,
  11. name,
  12. birthday,
  13. nobirth,
  14. sobirth,
  15. cobirth,
  16. dday,
  17. gender,
  18. ethnic,
  19. nation,
  20. homeadress,
  21. regresidence,
  22. maritalstat,
  23. maritalstatdate,
  24. offspring,
  25. support,
  26. empstat,
  27. empstatdate,
  28. raid,
  29. ral,
  30. al,
  31. coadress,
  32. pmphone,
  33. mhone1,
  34. mhone2,
  35. sophone,
  36. height,
  37. weight,
  38. cillness,
  39. pillness,
  40. cdiseases,
  41. bmi,
  42. fmhistory,
  43. evadate,
  44. cohevaluation,
  45. hphone,
  46. occupationid,
  47. occupation,
  48. odate,
  49. employer,
  50. wphone,
  51. empdate,
  52. lemployer,
  53. idcard,
  54. passport,
  55. dlicense,
  56. education,
  57. university,
  58. edate,
  59. wechat,
  60. weibo,
  61. email,
  62. qq,
  63. tiktok,
  64. saccount1,
  65. sa1cat,
  66. saccount2,
  67. sa2cat,
  68. ctype,
  69. father,
  70. mother,
  71. mate,
  72. child1,
  73. child2,
  74. cochild,
  75. rpid,
  76. rpdescribe,
  77. corp,
  78. vid,
  79. vdescribe,
  80. covehicle,
  81. anniversary1,
  82. a1describe,
  83. anniversary2,
  84. a2describe,
  85. soanniversary,
  86. custtype,
  87. bankname,
  88. tobankcard,
  89. accname,
  90. bankaccno,
  91. cobaccount,
  92. sotlirisk,
  93. soairisk,
  94. sosiirisk,
  95. somcirisk,
  96. someirisk,
  97. soefirisk,
  98. sopirisk,
  99. sowmirisk,
  100. custclass,
  101. convalue,
  102. awarded3,
  103. awarded2,
  104. awarded1,
  105. sovalue,
  106. enddate,
  107. systemtag1,
  108. systemtag2,
  109. systemtag3,
  110. systemtag4,
  111. systemtag5,
  112. cocommunication,
  113. lcdate,
  114. lctype,
  115. lcmethod,
  116. cocomplaint,
  117. lcptdate,
  118. lcptreason,
  119. lcptlink,
  120. lcptresult,
  121. lcptduration,
  122. lcptperson,
  123. soppremium,
  124. lappdate,
  125. cndate,
  126. cnstatus,
  127. coclaim,
  128. soclaim,
  129. cocnotification,
  130. fadate,
  131. fachannel,
  132. faorg,
  133. lpno,
  134. lpstate,
  135. lpname,
  136. lpchannel,
  137. lporg,
  138. copolicy,
  139. lpostype,
  140. iaccno1,
  141. iaccname1,
  142. iaccno2,
  143. iaccname2,
  144. iaccno3,
  145. iaccname3,
  146. soiaccount1,
  147. soiaccount2,
  148. soiaccount3,
  149. coiaccount,
  150. homeid,
  151. branchcode,
  152. custstate,
  153. datasource,
  154. smoking,
  155. drinking,
  156. pregnancy,
  157. hobby1,
  158. hobby2,
  159. hobby3,
  160. pincome,
  161. fincome,
  162. regtype,
  163. incomesource,
  164. sistatus,
  165. novpolicy,
  166. noivpolicy,
  167. nostinsurance,
  168. nospinsurance,
  169. iself,
  170. iparent,
  171. ichildren,
  172. imate,
  173. policybelong,
  174. zipcode,
  175. othernumber,
  176. otheridnumber,
  177. officialcalculus,
  178. created_by,
  179. created_time,
  180. updated_by,
  181. updated_time,
  182. label1,
  183. label2,
  184. label3,
  185. label4,
  186. label5,
  187. label6,
  188. label7,
  189. label8,
  190. label9,
  191. label10,
  192. label11,
  193. label12,
  194. label13,
  195. label14,
  196. label15,
  197. label16,
  198. label17,
  199. label18,
  200. label19,
  201. label20,
  202. label21,
  203. label22,
  204. label23,
  205. -- label24,
  206. -- label25,
  207. -- label26,
  208. -- label27,
  209. label28,
  210. -- label29,
  211. -- label30,
  212. -- label31,
  213. -- label32,
  214. -- label33,
  215. label34,
  216. label35,
  217. label36,
  218. label37,
  219. label38,
  220. label39,
  221. label40,
  222. label41,
  223. label42,
  224. -- label43,
  225. -- label44,
  226. -- label45,
  227. -- label46,
  228. -- label47,
  229. -- label48,
  230. -- label49,
  231. -- label50,
  232. label51,
  233. -- label52,
  234. label53,
  235. -- label54,
  236. -- label55,
  237. -- label56,
  238. -- label57,
  239. -- label58,
  240. -- label59,
  241. label60,
  242. -- label61,
  243. -- label62,
  244. label63,
  245. -- label64,
  246. -- label65,
  247. -- label66,
  248. label67,
  249. -- label68,
  250. label69,
  251. label70,
  252. label71,
  253. label72,
  254. label73,
  255. label74,
  256. label75,
  257. label76,
  258. label77,
  259. -- label78,
  260. -- label79,
  261. label80,
  262. -- label81,
  263. label82,
  264. label83,
  265. label84,
  266. label85,
  267. label86,
  268. label87,
  269. -- label88,
  270. -- label89,
  271. label90,
  272. -- label91,
  273. -- label92,
  274. label93,
  275. -- label94,
  276. -- label95,
  277. label96,
  278. label97,
  279. label98,
  280. label99,
  281. label100,
  282. label101,
  283. label102,
  284. label103,
  285. label104,
  286. label105,
  287. label106,
  288. -- label107,
  289. -- label108,
  290. -- label109,
  291. -- label110,
  292. -- label111,
  293. label112,
  294. -- label113,
  295. label114,
  296. -- label115,
  297. label116,
  298. -- label117,
  299. label118,
  300. label119,
  301. -- label120,
  302. salecom
  303. )
  304. SELECT
  305. row_number()OVER(ORDER BY i.scustid),
  306. i.indid,
  307. i.custid,
  308. i.scustid,
  309. i.name,
  310. i.birthday,
  311. i.nobirth,
  312. i.sobirth,
  313. i.cobirth,
  314. i.dday,
  315. i.gender,
  316. i.ethnic,
  317. i.nation,
  318. i.homeadress,
  319. i.regresidence,
  320. i.maritalstat,
  321. i.maritalstatdate,
  322. i.offspring,
  323. i.support,
  324. i.empstat,
  325. i.empstatdate,
  326. i.raid,
  327. i.ral,
  328. i.al,
  329. i.coadress,
  330. i.pmphone,
  331. i.mhone1,
  332. i.mhone2,
  333. i.sophone,
  334. i.height,
  335. i.weight,
  336. i.cillness,
  337. i.pillness,
  338. i.cdiseases,
  339. i.bmi,
  340. i.fmhistory,
  341. i.evadate,
  342. i.cohevaluation,
  343. i.hphone,
  344. i.occupationid,
  345. i.occupation,
  346. i.odate,
  347. i.employer,
  348. i.wphone,
  349. i.empdate,
  350. i.lemployer,
  351. i.idcard,
  352. i.passport,
  353. i.dlicense,
  354. i.education,
  355. i.university,
  356. i.edate,
  357. i.wechat,
  358. i.weibo,
  359. i.email,
  360. i.qq,
  361. i.tiktok,
  362. i.saccount1,
  363. i.sa1cat,
  364. i.saccount2,
  365. i.sa2cat,
  366. i.ctype,
  367. i.father,
  368. i.mother,
  369. i.mate,
  370. i.child1,
  371. i.child2,
  372. i.cochild,
  373. i.rpid,
  374. i.rpdescribe,
  375. i.corp,
  376. i.vid,
  377. i.vdescribe,
  378. i.covehicle,
  379. i.anniversary1,
  380. i.a1describe,
  381. i.anniversary2,
  382. i.a2describe,
  383. i.soanniversary,
  384. i.custtype,
  385. i.bankname,
  386. i.tobankcard,
  387. i.accname,
  388. i.bankaccno,
  389. i.cobaccount,
  390. i.sotlirisk,
  391. i.soairisk,
  392. i.sosiirisk,
  393. i.somcirisk,
  394. i.someirisk,
  395. i.soefirisk,
  396. i.sopirisk,
  397. i.sowmirisk,
  398. i.custclass,
  399. i.convalue,
  400. i.awarded3,
  401. i.awarded2,
  402. i.awarded1,
  403. i.sovalue,
  404. i.enddate,
  405. i.systemtag1,
  406. i.systemtag2,
  407. i.systemtag3,
  408. i.systemtag4,
  409. i.systemtag5,
  410. i.cocommunication,
  411. i.lcdate,
  412. i.lctype,
  413. i.lcmethod,
  414. i.cocomplaint,
  415. i.lcptdate,
  416. i.lcptreason,
  417. i.lcptlink,
  418. i.lcptresult,
  419. i.lcptduration,
  420. i.lcptperson,
  421. i.soppremium,
  422. i.lappdate,
  423. i.cndate,
  424. i.cnstatus,
  425. i.coclaim,
  426. i.soclaim,
  427. i.cocnotification,
  428. i.fadate,
  429. i.fachannel,
  430. i.faorg,
  431. i.lpno,
  432. i.lpstate,
  433. i.lpname,
  434. i.lpchannel,
  435. i.lporg,
  436. i.copolicy,
  437. i.lpostype,
  438. i.iaccno1,
  439. i.iaccname1,
  440. i.iaccno2,
  441. i.iaccname2,
  442. i.iaccno3,
  443. i.iaccname3,
  444. i.soiaccount1,
  445. i.soiaccount2,
  446. i.soiaccount3,
  447. i.coiaccount,
  448. i.homeid,
  449. i.branchcode,
  450. i.custstate,
  451. i.datasource,
  452. i.smoking,
  453. i.drinking,
  454. i.pregnancy,
  455. i.hobby1,
  456. i.hobby2,
  457. i.hobby3,
  458. i.pincome,
  459. i.fincome,
  460. i.regtype,
  461. i.incomesource,
  462. i.sistatus,
  463. i.novpolicy,
  464. i.noivpolicy,
  465. i.nostinsurance,
  466. i.nospinsurance,
  467. i.iself,
  468. i.iparent,
  469. i.ichildren,
  470. i.imate,
  471. i.policybelong,
  472. i.zipcode,
  473. i.othernumber,
  474. i.otheridnumber,
  475. i.officialcalculus,
  476. i.created_by,
  477. sysdate as created_time,
  478. i.updated_by,
  479. i.updated_time,
  480. i.label1,
  481. i.label2,
  482. i.label3,
  483. i.label4,
  484. i.label5,
  485. i.label6,
  486. i.label7,
  487. i.label8,
  488. i.label9,
  489. i.label10,
  490. i.label11,
  491. i.label12,
  492. i.label13,
  493. i.label14,
  494. i.label15,
  495. i.label16,
  496. i.label17,
  497. i.label18,
  498. i.label19,
  499. i.label20,
  500. i.label21,
  501. i.label22,
  502. i.label23,
  503. -- i.label24,
  504. -- i.label25,
  505. -- i.label26,
  506. -- i.label27,
  507. i.label28,
  508. -- i.label29,
  509. -- i.label30,
  510. -- i.label31,
  511. -- i.label32,
  512. -- i.label33,
  513. i.label34,
  514. i.label35,
  515. i.label36,
  516. i.label37,
  517. i.label38,
  518. i.label39,
  519. i.label40,
  520. i.label41,
  521. i.label42,
  522. -- i.label43,
  523. -- i.label44,
  524. -- i.label45,
  525. -- i.label46,
  526. -- i.label47,
  527. -- i.label48,
  528. -- i.label49,
  529. -- i.label50,
  530. i.label51,
  531. -- i.label52,
  532. i.label53,
  533. -- i.label54,
  534. -- i.label55,
  535. -- i.label56,
  536. -- i.label57,
  537. -- i.label58,
  538. -- i.label59,
  539. i.label60,
  540. -- i.label61,
  541. -- i.label62,
  542. i.label63,
  543. -- i.label64,
  544. -- i.label65,
  545. -- i.label66,
  546. i.label67,
  547. -- i.label68,
  548. i.label69,
  549. i.label70,
  550. i.label71,
  551. i.label72,
  552. i.label73,
  553. i.label74,
  554. i.label75,
  555. i.label76,
  556. i.label77,
  557. -- i.label78,
  558. -- i.label79,
  559. i.label80,
  560. -- i.label81,
  561. i.label82,
  562. i.label83,
  563. i.label84,
  564. i.label85,
  565. i.label86,
  566. i.label87,
  567. -- i.label88,
  568. -- i.label89,
  569. i.label90,
  570. -- i.label91,
  571. -- i.label92,
  572. i.label93,
  573. -- i.label94,
  574. -- i.label95,
  575. i.label96,
  576. i.label97,
  577. i.label98,
  578. i.label99,
  579. i.label100,
  580. i.label101,
  581. i.label102,
  582. i.label103,
  583. i.label104,
  584. i.label105,
  585. i.label106,
  586. -- i.label107,
  587. -- i.label108,
  588. -- i.label109,
  589. -- i.label110,
  590. -- i.label111,
  591. i.label112,
  592. -- i.label113,
  593. i.label114,
  594. -- i.label115,
  595. i.label116,
  596. -- i.label117,
  597. i.label118,
  598. i.label119,
  599. -- i.label120,
  600. t.salecom
  601. FROM (
  602. -- 投保人和被保人都作为客户处理
  603. -- 投保人
  604. SELECT distinct p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  605. union
  606. -- 被保人
  607. SELECT distinct p.insuredno as customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  608. ) t, shanglifeecif.individual i WHERE t.customerno = i.scustid;
  609. dbms_output.put_line('init_customerno_salecom_relation 函数跑批完成!');
  610. EXCEPTION
  611. WHEN HIVE_EXCEPTION THEN
  612. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  613. WHEN Others THEN
  614. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  615. END;
  616. CREATE OR REPLACE PROCEDURE shanglifeecif.init_individual_main() -- 初始化 数据全部插入
  617. IS
  618. DECLARE
  619. individual_count int
  620. strsql string
  621. BEGIN
  622. shanglifeecif.customertotaltemp();
  623. DELETE FROM shanglifeecif.individual;
  624. --初始化客户信息
  625. shanglifeecif.init_all_individual();
  626. --更新用户等级信息
  627. shanglifeecif.up_t_customers_class_1();
  628. --更新其它信息
  629. shanglifeecif.up_other_customerinfo();
  630. --更新被保人信息
  631. shanglifeecif.update_insuredinfo();
  632. /*
  633. customerno_salecom_relation表中字段的值是从individual表复制来的,cron.sh中还有一些为individual表字段赋值的步骤。
  634. 所以初始化和更新customerno_salecom_relation表放在cron.sh最后,这样就能保证初始化时individual表中所有字段都已经赋值完毕
  635. -- 初始化用户渠道关系表
  636. shanglifeecif.init_customerno_salecom_relation();
  637. --客户信息添加渠道
  638. shanglifeecif.init_Individual_salecom();
  639. -- 分渠道重新计算标签值,并更新到用户渠道关系表中
  640. shanglifeecif.update_customerno_salecom_relation_labels();
  641. */
  642. END;
  643. CREATE OR REPLACE PROCEDURE shanglifeecif.init_individual_salecom() IS
  644. DECLARE
  645. BEGIN
  646. -- 客户信息添加渠道
  647. --
  648. UPDATE shanglifeecif.Individual si1 SET si1.SALECOM = (
  649. SELECT t.salecoms FROM (
  650. SELECT customerno , concat_ws(',',collect_set(salecom)) AS salecoms FROM (
  651. SELECT b.scustid AS customerno ,b.salecom AS salecom FROM
  652. shanglifeecif.individual a , shanglifeecif.customerno_salecom_relation b
  653. WHERE a.scustid = b.scustid
  654. ) GROUP BY customerno
  655. ) t
  656. WHERE t.customerno = si1.scustid);
  657. dbms_output.put_line('init_Individual_salecom 函数跑批完成!');
  658. EXCEPTION
  659. WHEN HIVE_EXCEPTION THEN
  660. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  661. WHEN Others THEN
  662. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  663. END;
  664. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main()
  665. IS
  666. DECLARE
  667. s_count int
  668. BEGIN
  669. DELETE FROM shanglifeecif.IndRelationShip;
  670. --从保单信息表(POLICY_INFORMATION)获取投保人和被保人的关系并
  671. --第一步取关系父母,子女
  672. insert into shanglifeecif.IndRelationShip(
  673. irsid,
  674. RSType,
  675. IndID1,
  676. Name1,
  677. IDCard1,
  678. Role1,
  679. IndID2,
  680. Name2,
  681. IDCard2,
  682. RSSTime,
  683. Role2,
  684. salecom
  685. )SELECT
  686. reflect("java.util.UUID", "randomUUID"),
  687. '父母',
  688. p.CUSTOMERNO,
  689. max(p.NAME),
  690. max(p.IDNO),
  691. CASE max(p.sex)
  692. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  693. p.INSUREDNO,
  694. max(p.INSUREDNAME),
  695. max(p.INSUREDIDNO),
  696. min(p.polapplydate),
  697. CASE max(p.INSUREDSEX)
  698. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  699. salecom
  700. FROM dsj.POLICY_INFORMATION p
  701. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  702. AND p.birthday > p.insuredbirthday
  703. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  704. insert into shanglifeecif.IndRelationShip(
  705. irsid,
  706. RSType,
  707. IndID1,
  708. Name1,
  709. IDCard1,
  710. Role1,
  711. IndID2,
  712. Name2,
  713. IDCard2,
  714. RSSTime,
  715. Role2,
  716. salecom
  717. )
  718. SELECT
  719. reflect("java.util.UUID", "randomUUID"),
  720. '子女',
  721. p.CUSTOMERNO,
  722. max(p.NAME),
  723. max(p.IDNO),
  724. CASE max(p.sex)
  725. WHEN '0' THEN '父亲' WHEN '1' THEN '母亲' END,
  726. p.INSUREDNO,
  727. max(p.INSUREDNAME),
  728. max(p.INSUREDIDNO),
  729. min(p.polapplydate),
  730. CASE max(p.INSUREDSEX)
  731. WHEN '0' THEN '儿子' WHEN '1' THEN '女儿' END,
  732. salecom
  733. FROM dsj.POLICY_INFORMATION p
  734. WHERE (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女')
  735. AND p.birthday < p.insuredbirthday
  736. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  737. --第二步取关系祖父母、外祖父母 祖孙、外祖孙
  738. insert into shanglifeecif.IndRelationShip(
  739. irsid,
  740. RSType,
  741. IndID1,
  742. Name1,
  743. IDCard1,
  744. Role1,
  745. IndID2,
  746. Name2,
  747. IDCard2,
  748. RSSTime,
  749. Role2,
  750. salecom
  751. )SELECT
  752. reflect("java.util.UUID", "randomUUID"),
  753. '祖父母、外祖父母',
  754. p.CUSTOMERNO,
  755. max(p.NAME),
  756. max(p.IDNO),
  757. CASE max(p.sex)
  758. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  759. p.INSUREDNO,
  760. max(p.INSUREDNAME),
  761. max(p.INSUREDIDNO),
  762. min(p.polapplydate),
  763. CASE max(p.INSUREDSEX)
  764. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  765. salecom
  766. FROM dsj.POLICY_INFORMATION p
  767. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  768. AND p.birthday > p.insuredbirthday
  769. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  770. insert into shanglifeecif.IndRelationShip(
  771. irsid,
  772. RSType,
  773. IndID1,
  774. Name1,
  775. IDCard1,
  776. Role1,
  777. IndID2,
  778. Name2,
  779. IDCard2,
  780. RSSTime,
  781. Role2,
  782. salecom
  783. )SELECT
  784. reflect("java.util.UUID", "randomUUID"),
  785. '祖孙、外祖孙',
  786. p.CUSTOMERNO,
  787. max(p.NAME),
  788. max(p.IDNO),
  789. CASE max(p.sex)
  790. WHEN '0' THEN '(外)祖父' WHEN '1' THEN '(外)祖母' END,
  791. p.INSUREDNO,
  792. max(p.INSUREDNAME),
  793. max(p.INSUREDIDNO),
  794. min(p.polapplydate),
  795. CASE max(p.INSUREDSEX)
  796. WHEN '0' THEN '(外)祖孙' WHEN '1' THEN '(外)孙女' END,
  797. salecom
  798. FROM dsj.POLICY_INFORMATION p
  799. WHERE (p.RELATIONTOAPPNT = '祖父母、外祖父母' OR p.RELATIONTOAPPNT = '祖孙、外祖孙')
  800. AND p.birthday < p.insuredbirthday
  801. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  802. --第三步取配偶和其他
  803. insert into shanglifeecif.IndRelationShip(
  804. irsid,
  805. RSType,
  806. IndID1,
  807. Name1,
  808. IDCard1,
  809. Role1,
  810. IndID2,
  811. Name2,
  812. IDCard2,
  813. RSSTime,
  814. Role2,
  815. salecom
  816. )SELECT
  817. reflect("java.util.UUID", "randomUUID"),
  818. max(p.RELATIONTOAPPNT),
  819. p.CUSTOMERNO,
  820. max(p.NAME),
  821. max(p.IDNO),
  822. CASE max(p.RELATIONTOAPPNT)
  823. WHEN '配偶'
  824. THEN case max(p.sex) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  825. ELSE max(p.RELATIONTOAPPNT)
  826. END,
  827. p.INSUREDNO,
  828. max(p.INSUREDNAME),
  829. max(p.INSUREDIDNO),
  830. min(p.polapplydate),
  831. CASE max(p.RELATIONTOAPPNT)
  832. WHEN '配偶'
  833. THEN case max(p.INSUREDSEX) WHEN '0' THEN '丈夫' WHEN '1' THEN '妻子' END
  834. ELSE max(p.RELATIONTOAPPNT)
  835. END,
  836. salecom
  837. FROM dsj.POLICY_INFORMATION p
  838. WHERE p.RELATIONTOAPPNT = '配偶'
  839. or p.RELATIONTOAPPNT = '其他'
  840. GROUP BY p.CUSTOMERNO,p.INSUREDNO, p.salecom;
  841. -- 完善被保人关系
  842. -- waite up sqls running end then run this sql if time is less will be loss data
  843. dbms_lock.sleep(60);
  844. insert into shanglifeecif.IndRelationShip(
  845. irsid,
  846. RSType,
  847. IndID1,
  848. Name1,
  849. IDCard1,
  850. Role1,
  851. IndID2,
  852. Name2,
  853. IDCard2,
  854. Role2,
  855. salecom
  856. )SELECT reflect("java.util.UUID", "randomUUID"),
  857. CASE RSType
  858. WHEN '父母' THEN '子女'
  859. WHEN '子女' THEN '父母'
  860. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  861. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  862. WHEN '配偶' THEN '配偶'
  863. ELSE RSType
  864. END,
  865. IndID2,
  866. Name2,
  867. IDCard2,
  868. Role2,
  869. IndID1,
  870. Name1,
  871. IDCard1,
  872. Role1,
  873. salecom
  874. FROM shanglifeecif.IndRelationShip sis ;
  875. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  876. EXCEPTION
  877. WHEN HIVE_EXCEPTION THEN
  878. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  879. WHEN Others THEN
  880. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  881. END;
  882. CREATE OR REPLACE PROCEDURE shanglifeecif.init_indrelationship_main2( )
  883. IS
  884. DECLARE
  885. s_count int
  886. BEGIN
  887. -- 完善被保人关系
  888. /** */
  889. insert into shanglifeecif.IndRelationShip(
  890. irsid,
  891. RSType,
  892. IndID1,
  893. Name1,
  894. IDCard1,
  895. Role1,
  896. IndID2,
  897. Name2,
  898. IDCard2,
  899. Role2
  900. )SELECT reflect("java.util.UUID", "randomUUID"),
  901. CASE RSType
  902. WHEN '父母' THEN '子女'
  903. WHEN '子女' THEN '父母'
  904. WHEN '祖孙、外祖孙' THEN '祖父母、外祖父母'
  905. WHEN '祖父母、外祖父母' THEN '祖孙、外祖孙'
  906. WHEN '配偶' THEN '配偶'
  907. ELSE RSType
  908. END,
  909. IndID2,
  910. Name2,
  911. IDCard2,
  912. Role2,
  913. IndID1,
  914. Name1,
  915. IDCard1,
  916. Role1
  917. FROM shanglifeecif.IndRelationShip sis ;
  918. dbms_output.put_line('init_indrelationship_main函数跑批完成!');
  919. EXCEPTION
  920. WHEN HIVE_EXCEPTION THEN
  921. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  922. WHEN Others THEN
  923. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  924. END;
  925. CREATE OR REPLACE PROCEDURE shanglifeecif.partytimeline_main()
  926. IS
  927. BEGIN
  928. DELETE FROM shanglifeecif.partytimeline;
  929. shanglifeecif.partytimeline_tb();
  930. shanglifeecif.partytimeline_lp();
  931. shanglifeecif.partytimeline_zx();
  932. shanglifeecif.partytimeline_bq();
  933. shanglifeecif.partytimeline_tuibao();
  934. shanglifeecif.partytimeline_ts();
  935. shanglifeecif.partytimeline_hf();
  936. shanglifeecif.partytimeline_xq();
  937. -- 更新渠道字段
  938. shanglifeecif.update_partytimeline_add_salecom();
  939. END;
  940. CREATE OR REPLACE PROCEDURE shanglifeecif.update_customerno_salecom_relation_labels() IS
  941. -- 标签值分渠道计算,并将计算结果存入shanglifeecif.customerno_salecom_relation表
  942. -- 该表不存储跟渠道的标签值(也就是”上海人寿“渠道),只存储下面子渠道的标签值
  943. BEGIN
  944. -- 1. 是否持有寿险有效保单 label24
  945. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label24 = '持有寿险有效保单' WHERE exists (
  946. 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 = '人寿保险')
  947. );
  948. -- 2. 保单件数区间 label25 参考bdnum_distribution.sql : 4行
  949. -- 在 shanglifeecif.bdnum_distribution() 中处理
  950. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label25 = (
  951. select
  952. CASE
  953. WHEN t.n = 0 THEN '无保单'
  954. WHEN t.n = 1 THEN '1件保单'
  955. WHEN t.n = 2 THEN '2件保单'
  956. WHEN t.n between 3 and 5 THEN '3-5件保单'
  957. WHEN t.n between 6 and 10 THEN '6-10件保单'
  958. WHEN t.n between 11 and 20 THEN '11-20件保单'
  959. WHEN t.n between 21 and 50 THEN '21-50件保单'
  960. WHEN t.n > 50 THEN '50件保单以上'
  961. END
  962. from (
  963. SELECT customerno, salecom, count(1) as n FROM dsj.policy_information p WHERE appflag IS NOT NULL group by customerno, salecom
  964. ) t
  965. where
  966. si1.scustid = t.customerno
  967. and si1.salecom = t.salecom
  968. );
  969. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET (
  970. -- si1.NOVPolicy -- 有效保单数
  971. -- , si1.noivpolicy -- 无效保单数
  972. -- , si1.Label25 --总保单数
  973. -- ) = (
  974. -- SELECT
  975. -- valid_num
  976. -- , invalid_num
  977. -- , total
  978. -- FROM (
  979. -- SELECT
  980. -- customerno
  981. -- , salecom
  982. -- , sum(CASE WHEN appflag = '有效' THEN 1 ELSE 0 end) AS valid_num -- 有效保单数
  983. -- , sum(CASE WHEN appflag <> '有效' THEN 1 ELSE 0 end) AS invalid_num -- 无效保单数
  984. -- , count(1) AS total --总保单数
  985. -- FROM (
  986. -- SELECT customerno, salecom, contno, appflag
  987. -- FROM dsj.policy_information p WHERE appflag IS NOT NULL GROUP BY customerno, salecom, contno, appflag
  988. -- ) t
  989. -- GROUP BY customerno, salecom
  990. -- ) s
  991. -- WHERE si1.scustid = s.customerno AND si1.salecom = s.salecom
  992. -- )
  993. -- WHERE 1 = 1;
  994. -- 3. 是否贷款 label26
  995. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label26 = '有保单贷款' WHERE exists (
  996. 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 (
  997. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  998. )
  999. );
  1000. -- 4. 是否有极短意保单 label27
  1001. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  1002. -- SELECT
  1003. -- CASE
  1004. -- WHEN t.cnt > 0 AND t.cnt = t.tnum THEN '仅极短意外险'
  1005. -- WHEN t.cnt > 0 AND t.cnt <> t.tnum THEN '有极短意外险'
  1006. -- END
  1007. -- FROM (
  1008. -- SELECT
  1009. -- po.customerno
  1010. -- , po.salecom
  1011. -- , SUM(
  1012. -- CASE
  1013. -- WHEN
  1014. -- po.SECURITY in('7天','15天','30天','90天','1月','3月')
  1015. -- AND po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1016. -- THEN 1
  1017. -- ELSE 0
  1018. -- END
  1019. -- ) AS cnt
  1020. -- , COUNT(1) AS tnum
  1021. -- FROM dsj.policy_information po
  1022. -- WHERE
  1023. -- po.riskperiod='短期险'
  1024. -- GROUP BY customerno, salecom
  1025. -- ) t
  1026. -- WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  1027. -- );
  1028. --------------
  1029. -- 4. 是否有极短意保单 label27(方式二)
  1030. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  1031. SELECT
  1032. CASE
  1033. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  1034. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  1035. END
  1036. FROM (
  1037. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1038. SELECT
  1039. count(1) cnt
  1040. , po.customerno
  1041. , po.salecom
  1042. FROM
  1043. dsj.policy_information po
  1044. where
  1045. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  1046. and
  1047. po.riskperiod='短期险'
  1048. and
  1049. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1050. GROUP BY
  1051. po.customerno, po.salecom
  1052. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and p.salecom = t.salecom GROUP BY p.customerno, p.salecom
  1053. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1054. );
  1055. -- 5. 是否有趸交保单 Label29
  1056. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label29 = '有趸交保单' WHERE exists (
  1057. SELECT p.customerno FROM dsj.policy_information p, dsj.PREMIUM_LIST l
  1058. 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 '%一次交清%'
  1059. );
  1060. -- 6. 是否给本人投保 Label30
  1061. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label30 = (
  1062. SELECT
  1063. CASE
  1064. WHEN tt.bnum = 0 THEN '本人未投保'
  1065. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  1066. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  1067. END
  1068. FROM (
  1069. SELECT t.customerno, t.salecom, MAX(t.bnum) bnum, count(*) as tnum FROM (
  1070. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno, p.salecom
  1071. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1072. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1073. );
  1074. -- 7. 是否给父母投保 Label31
  1075. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label31 = (
  1076. SELECT
  1077. CASE
  1078. WHEN tt.bnum = 0 THEN '父母未投保'
  1079. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  1080. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  1081. END
  1082. FROM (
  1083. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1084. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  1085. GROUP BY p.customerno, p.salecom
  1086. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1087. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1088. );
  1089. -- 8. 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  1090. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label32 = (
  1091. SELECT
  1092. CASE
  1093. WHEN tt.bnum = 0 THEN '子女未投保'
  1094. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  1095. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  1096. END
  1097. FROM (
  1098. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1099. 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
  1100. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1101. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1102. );
  1103. -- 9. 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  1104. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label33 = (
  1105. SELECT
  1106. CASE
  1107. WHEN tt.bnum = 0 THEN '配偶未投保'
  1108. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  1109. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  1110. END
  1111. FROM (
  1112. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1113. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno, p.salecom
  1114. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1115. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1116. );
  1117. -- 10. 是否仅有1年期短险保单 Label43
  1118. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label43 = (
  1119. SELECT
  1120. CASE
  1121. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  1122. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  1123. END
  1124. FROM (
  1125. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1126. SELECT
  1127. count(1) cnt,
  1128. po.customerno,
  1129. po.salecom
  1130. FROM
  1131. dsj.policy_information po
  1132. where
  1133. po.SECURITY in('1年','6月','180天')
  1134. and
  1135. po.riskperiod='短期险'
  1136. and
  1137. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1138. GROUP BY
  1139. po.customerno, po.salecom
  1140. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and t.salecom = p.salecom GROUP BY p.customerno, p.salecom
  1141. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1142. );
  1143. -- 11. 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  1144. -- 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')
  1145. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label44 = '有失效保单' WHERE exists (
  1146. 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' )
  1147. );
  1148. -- 12. 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  1149. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label45 = '有缴费期满长险保单' WHERE exists (
  1150. 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='长期险'
  1151. );
  1152. -- 13. 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  1153. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label46 = '有续期缴费保单' WHERE exists (
  1154. 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 (
  1155. select otherno from dsj.ljspay where othernotype = '2'
  1156. )
  1157. );
  1158. -- 14. 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  1159. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label47 = '有责任期满的保单' WHERE exists (
  1160. 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")
  1161. );
  1162. -- 15. 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  1163. --第一步
  1164. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  1165. SELECT fadate FROM (
  1166. 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
  1167. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  1168. );
  1169. -- 第二步
  1170. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  1171. SELECT fadate FROM (
  1172. 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
  1173. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  1174. );
  1175. -- 第三步
  1176. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  1177. -- 16. 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  1178. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  1179. SELECT fadate FROM (
  1180. 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
  1181. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  1182. );
  1183. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  1184. SELECT fadate FROM (
  1185. 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
  1186. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  1187. );
  1188. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  1189. /*
  1190. * 二期分渠道计算标签值时这两个标签只有根渠道显示(也就是”上海人寿“渠道),其他渠道不展示
  1191. -- 17. 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  1192. -- 原始逻辑
  1193. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  1194. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  1195. WHERE p.salecomname IS NOT null
  1196. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1197. -- 18. 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  1198. -- 原始逻辑
  1199. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  1200. 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
  1201. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1202. */
  1203. -- 19. 最近保单状态 Label54
  1204. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label54 = (
  1205. SELECT '最近保单状态'||trim(t.appflag) FROM (
  1206. 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
  1207. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno AND si1.salecom = t.salecom
  1208. );
  1209. -- 20. 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  1210. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label55 = (
  1211. SELECT '客户最近一次办理'||t.edorname FROM (
  1212. SELECT
  1213. row_number() over(partition by p.customerno, p.salecom ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  1214. l.edortype,
  1215. l.contno,
  1216. p.customerno,
  1217. p.salecom,
  1218. l.edorappdate,
  1219. l.edorstate,
  1220. lm.edorcode,
  1221. lm.edorname
  1222. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  1223. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  1224. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1225. ) WHERE 1 = 1;
  1226. -- 21. 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  1227. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label56 = '有退保保单' WHERE exists (
  1228. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  1229. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  1230. )
  1231. );
  1232. -- 22. 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  1233. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label57 = (
  1234. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  1235. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE, p.salecom
  1236. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1237. WHERE c.contno = p.contno
  1238. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1239. );
  1240. -- 23. 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  1241. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label58 = (
  1242. SELECT "最近一次出险类型" || t.lloccurreason FROM (
  1243. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.lloccurreason, p.salecom
  1244. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1245. WHERE c.contno = p.contno
  1246. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1247. );
  1248. -- 24. 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  1249. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label59 = (
  1250. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  1251. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE, p.salecom
  1252. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p WHERE c.contno = p.contno
  1253. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1254. );
  1255. -- 25. 是否有满期给付保单 Label61 有满期给付保单
  1256. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label61 = '有满期给付保单' WHERE exists (
  1257. SELECT p.customerno FROM dsj.policy_information p WHERE si1.scustid = p.customerno and si1.salecom = p.salecom and p.contno IN (
  1258. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  1259. )
  1260. );
  1261. -- 26. 是否有生存金给付的保单 Label62 有生存金给付保单 无
  1262. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label62 = '有生存金给付的保单' WHERE exists (
  1263. 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 (
  1264. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  1265. )
  1266. );
  1267. -- 27. 是否有红利可领取的保单 Label64 有红利可领取保单 无
  1268. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label64 = '红利可领取的保单' WHERE exists (
  1269. SELECT p.customerno FROM dsj.policy_information p, dsj.lmriskapp l
  1270. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1
  1271. );
  1272. -- 28. 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  1273. /*
  1274. 一张保单对应一个保单号 contno,但表里会有重复保单号,因为一个保单会包含多个险种 riskcode,包含了几个险种就会有几条重复记录。
  1275. 如果客户只购买了一张保单,不管保单中包含多少个险种,只要包含“新型寿险”或“人寿保险”险种就认为是一单寿险客户
  1276. */
  1277. /*
  1278. -- 旧方法,性能低
  1279. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (SELECT temp.customerno FROM (
  1280. SELECT pi.customerno, pi.salecom, count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  1281. SELECT count(DISTINCT p.contno) AS pnum, p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  1282. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  1283. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno, p.salecom
  1284. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1285. GROUP BY pi.customerno, pi.salecom
  1286. )temp WHERE temp.tnum = temp.pnum AND tnum = 1 and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  1287. */
  1288. ----------- 方法二
  1289. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (
  1290. SELECT
  1291. customerno
  1292. , salecom
  1293. , count(DISTINCT contno) AS c -- 保单号去重后统计该客户总共有多少保单
  1294. , sum(
  1295. CASE
  1296. WHEN b.kindtype IN ('人寿保险', '新型寿险') THEN 1
  1297. ELSE 0
  1298. END
  1299. ) AS s -- 统计寿险有几条记录
  1300. FROM dsj.POLICY_INFORMATION p, dsj.riskkind b
  1301. WHERE p.riskcode = b.riskcode AND p.customerno = si1.scustid AND p.salecom = si1.salecom
  1302. GROUP BY customerno, salecom
  1303. HAVING c = 1 AND s > 0 -- 筛选只有一个保单且包含寿险的客户
  1304. );
  1305. -- 29. 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  1306. /*
  1307. -- 旧方法,性能低
  1308. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  1309. SELECT temp.customerno FROM (
  1310. SELECT count(*) AS tnum, t.customerno, t.salecom, max(t.pnum) AS pnum FROM (
  1311. SELECT p.customerno, p.salecom, count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno, p.salecom
  1312. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1313. GROUP BY t.customerno, t.salecom
  1314. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1315. );
  1316. */
  1317. --------------- 方法二
  1318. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  1319. SELECT
  1320. p.customerno
  1321. , p.salecom
  1322. -- , count(1) AS c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  1323. , sum(
  1324. case
  1325. when p.paycount = p.payendyear then 1
  1326. else 0
  1327. end
  1328. ) AS s
  1329. FROM dsj.policy_information p
  1330. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom
  1331. GROUP BY p.customerno, p.salecom
  1332. HAVING count(1) = s
  1333. );
  1334. -- 30. 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  1335. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label68 = '持有有效保单' WHERE exists (
  1336. SELECT salecom FROM dsj.POLICY_INFORMATION p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom
  1337. );
  1338. -- 31. 父母生日提醒 Label78 父亲生日临近 | 母亲生日临近 客户父母生日-当前日期<=5
  1339. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label78 = (
  1340. SELECT
  1341. case max(p.insuredsex)
  1342. when '0' then '父亲生日临近'
  1343. when '1' then '母亲生日临近'
  1344. end as s
  1345. from dsj.POLICY_INFORMATION p
  1346. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1347. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday > p.insuredbirthday -- 父母关系,并且投保人 > 被保人(也就是晚辈给长辈买保险,被保人是长辈)
  1348. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  1349. );
  1350. -- 32. 子女生日提醒 Label79 儿子生日临近 | 女儿生日临近 客户子女生日-当前日期<=5
  1351. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label79 = (
  1352. SELECT
  1353. case max(p.insuredsex)
  1354. when '0' then '儿子生日临近'
  1355. when '1' then '女儿生日临近'
  1356. end as s
  1357. from dsj.POLICY_INFORMATION p
  1358. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1359. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday < p.insuredbirthday -- 父母关系,并且投保人 < 被保人(也就是长辈给晚辈买保险,被保人是晚辈)
  1360. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  1361. );
  1362. -- 33. 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  1363. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label81 = '近期咨询过理赔' WHERE exists (
  1364. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.customerno = si1.scustid and dp.salecom = si1.salecom and dp.contno IN (
  1365. SELECT rm.contnos FROM dsj.cc_record_main rm
  1366. WHERE rm.reasonsecondname LIKE '%理赔%' and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  1367. );
  1368. -- 34. 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  1369. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label88 = '续期临期未缴费' WHERE exists (
  1370. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  1371. 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
  1372. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1373. );
  1374. -- 35. 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  1375. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label89 = '续期到期未缴费' WHERE exists (
  1376. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  1377. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  1378. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1379. );
  1380. -- 36. 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  1381. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE exists (SELECT temp.customerno FROM (
  1382. SELECT count(*) AS tnum,max(t.customerno) AS customerno, max(t.salecom) as salecom,max(t.pnum) AS pnum FROM (
  1383. SELECT p.customerno, p.salecom,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno, p.salecom
  1384. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1385. GROUP BY pi.customerno, pi.salecom
  1386. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  1387. /*
  1388. -- 方法二(性能反而慢,原因待查)
  1389. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE EXISTS (
  1390. SELECT
  1391. p.customerno
  1392. , p.salecom
  1393. -- , count(1) as c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  1394. , sum(
  1395. case
  1396. when p.appflag <> '有效' then 1
  1397. else 0
  1398. end
  1399. ) as s
  1400. from dsj.policy_information p
  1401. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1402. group by p.customerno, p.salecom
  1403. having count(1) = s
  1404. );
  1405. */
  1406. -- 37. 失效原因 Label92
  1407. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label92 = (
  1408. SELECT '有'||t.terminatestate||'保单' FROM (
  1409. 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
  1410. WHERE p.appflag = '中止'
  1411. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1412. );
  1413. -- 38. 终止原因 Label94
  1414. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label94 = (
  1415. SELECT '有'||t.terminatestate||'保单' FROM (
  1416. 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
  1417. WHERE p.appflag = '终止'
  1418. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1419. );
  1420. -- 39. 上年续期交费情况 Label95
  1421. -- 通过contno与dsj.policy_information表关联会有关联不上的数据,关联不上的数据不做处理
  1422. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label95 = (
  1423. SELECT
  1424. CASE
  1425. WHEN t.dnum=0 THEN '上一年如期缴费'
  1426. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  1427. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  1428. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  1429. END
  1430. FROM (
  1431. SELECT
  1432. 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
  1433. FROM dsj.ljapayperson l, dsj.policy_information p WHERE p.contno = l.contno and l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  1434. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid and t.salecom = si1.salecom
  1435. );
  1436. -- 40. 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  1437. -- 二期只计算这3个渠道
  1438. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  1439. --02个险渠道 期缴 大于20000以上
  1440. --03银保渠道 期缴 大于50000以上
  1441. --06健康险 期缴 大于 20000以上
  1442. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label107 = '高金额' WHERE exists (
  1443. SELECT p.customerno FROM dsj.policy_information p WHERE
  1444. p.appflag = '有效' AND p.payintv = '期缴' and
  1445. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000))
  1446. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1447. );
  1448. -- 41. 最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  1449. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label108 = '最近理赔结案' WHERE exists (
  1450. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1451. WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  1452. and p.contno = c.contno and c.insuredno = si1.scustid and p.salecom = si1.salecom
  1453. );
  1454. -- 42. 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  1455. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label109 = '理赔报案追踪' WHERE exists (
  1456. 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 (
  1457. SELECT c.CONTNO FROM dsj.insurance_claim c WHERE c.LLCLAIMSTATE = '报案' AND DATEDIFF(sysdate(), c.RPTDATE) <30
  1458. )
  1459. );
  1460. -- 43. 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  1461. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label110 = '理赔处理中' WHERE exists (
  1462. 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 (
  1463. SELECT c.contno FROM dsj.INSURANCE_CLAIM c WHERE c.llclaimstate = '受理' OR c.llclaimstate = '立案'
  1464. )
  1465. );
  1466. -- 44. 最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  1467. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label111 = '最近保全完成' WHERE exists (
  1468. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  1469. 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'
  1470. )
  1471. );
  1472. -- 45. 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  1473. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label113 = '生存金未领' WHERE exists (
  1474. 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 (
  1475. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  1476. )
  1477. );
  1478. -- 46. 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  1479. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label115 = '红利垫缴还款' WHERE exists (
  1480. 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 (
  1481. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  1482. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  1483. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  1484. )
  1485. );
  1486. -- 47. 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  1487. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label117 = '宽限期' WHERE exists (
  1488. SELECT p.customerno FROM dsj.policy_information p WHERE
  1489. p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  1490. 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
  1491. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1492. );
  1493. --48. 重点银行 Label120 重点银行
  1494. -- 二期只计算银保渠道(03)
  1495. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label120 = '重点银行' WHERE exists (
  1496. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and si1.salecom = '03' and p.AGENTCOM LIKE '%招商银行%'
  1497. );
  1498. dbms_output.put_line('update_customerno_salecom_relation_labels 函数跑批完成!');
  1499. EXCEPTION
  1500. WHEN HIVE_EXCEPTION THEN
  1501. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1502. WHEN Others THEN
  1503. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1504. END;
  1505. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  1506. DECLARE
  1507. BEGIN
  1508. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  1509. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  1510. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  1511. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  1512. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  1513. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  1514. --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 '老年'" 儿童、少年、青年、中年、老年
  1515. --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);
  1516. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  1517. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  1518. --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离异
  1519. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  1520. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  1521. --case si1.maritalStat
  1522. --when 1 then '未婚'
  1523. --when 2 then '已婚'
  1524. --when 3 then '丧偶'
  1525. --when 4 then '离异'
  1526. --else NULL END
  1527. --) WHERE 1 = 1;
  1528. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  1529. --else null" 无子女、1孩、2孩及以上
  1530. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  1531. SELECT nvl(t.cnum,0) FROM (
  1532. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  1533. WHERE si.rstype = '子女' GROUP BY si.indid1
  1534. ) t WHERE t.indid1 = si1.scustid
  1535. ) ;
  1536. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  1537. case
  1538. when si1.COChild=0 then '无子女'
  1539. when si1.COChild=1 then '1孩'
  1540. when si1.COChild>=2 then '2孩及以上'
  1541. else null END
  1542. ) WHERE si1.cochild is not null;
  1543. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  1544. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  1545. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  1546. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  1547. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  1548. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  1549. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  1550. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  1551. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  1552. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  1553. --根据数据判断单位应该是万元,这里都除以10000做判断
  1554. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  1555. CASE
  1556. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  1557. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  1558. WHEN si1.pincome > 100 THEN '富人'
  1559. else null END
  1560. ) where 1 = 1;
  1561. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  1562. --else null" 无车,1辆车,2辆车及以上
  1563. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  1564. CASE
  1565. WHEN si1.COVehicle ==0 THEN '无车'
  1566. WHEN si1.COVehicle == 1 THEN '1辆车'
  1567. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  1568. ELSE NULL END
  1569. ) where 1 = 1;
  1570. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  1571. --else null" 无房,1套房,2套房及以上
  1572. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  1573. CASE
  1574. WHEN si1.CORP ==0 THEN '无房'
  1575. WHEN si1.CORP == 1 THEN '1套房'
  1576. WHEN si1.CORP > 1 THEN '2套房以上'
  1577. else null END
  1578. ) where 1 = 1;
  1579. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  1580. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  1581. (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 = '人寿保险'));
  1582. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  1583. --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件'
  1584. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  1585. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  1586. --第一步 更新 Individual.NOVPolicy 有效记录数
  1587. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  1588. --SELECT temp.customerno,count(*) AS cnum FROM (
  1589. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  1590. --) temp GROUP BY temp.customerno
  1591. --) t WHERE t.customerno = si1.scustid);
  1592. --第二步 更新 Individual.NOIVPolicy 无效记录数
  1593. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  1594. --SELECT temp.customerno,count(*) AS cnum FROM (
  1595. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  1596. --) temp GROUP BY temp.customerno
  1597. --) t WHERE t.customerno = si1.scustid);
  1598. --第三步
  1599. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  1600. --CASE
  1601. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  1602. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  1603. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  1604. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  1605. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  1606. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  1607. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  1608. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  1609. --END ) where 1 = 1;
  1610. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  1611. --CASE
  1612. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  1613. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  1614. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  1615. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  1616. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  1617. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  1618. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  1619. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  1620. --END
  1621. --) where 1 = 1;
  1622. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  1623. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  1624. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  1625. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  1626. )
  1627. );
  1628. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  1629. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  1630. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  1631. SELECT
  1632. CASE
  1633. WHEN temp.cnt >0 THEN
  1634. '有极短意外险'
  1635. END
  1636. FROM
  1637. (
  1638. SELECT
  1639. count(1) cnt,
  1640. policy.customerno
  1641. FROM
  1642. policy_information policy
  1643. where
  1644. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  1645. and
  1646. policy.riskperiod='短期险'
  1647. and
  1648. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1649. GROUP BY
  1650. policy.customerno
  1651. ) temp
  1652. WHERE temp.customerno = si1.scustid
  1653. );*/
  1654. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  1655. SELECT
  1656. CASE
  1657. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  1658. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  1659. END
  1660. FROM (
  1661. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1662. SELECT
  1663. count(1) cnt,
  1664. po.customerno
  1665. FROM
  1666. dsj.policy_information po
  1667. where
  1668. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  1669. and
  1670. po.riskperiod='短期险'
  1671. and
  1672. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1673. GROUP BY
  1674. po.customerno
  1675. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  1676. ) temp where temp.customerno = si1.scustid
  1677. );
  1678. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  1679. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  1680. 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 '%一次交清%')
  1681. );
  1682. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  1683. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  1684. SELECT
  1685. CASE
  1686. WHEN tt.bnum = 0 THEN '本人未投保'
  1687. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  1688. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  1689. END
  1690. FROM (
  1691. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1692. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno
  1693. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1694. ) tt WHERE tt.customerno = si1.scustid
  1695. );
  1696. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  1697. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  1698. SELECT
  1699. CASE
  1700. WHEN tt.bnum = 0 THEN '父母未投保'
  1701. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  1702. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  1703. END
  1704. FROM (
  1705. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1706. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  1707. GROUP BY p.customerno
  1708. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1709. ) tt WHERE tt.customerno = si1.scustid
  1710. );
  1711. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  1712. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  1713. SELECT
  1714. CASE
  1715. WHEN tt.bnum = 0 THEN '子女未投保'
  1716. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  1717. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  1718. END
  1719. FROM (
  1720. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1721. 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
  1722. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1723. ) tt WHERE tt.customerno = si1.scustid
  1724. );
  1725. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  1726. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  1727. SELECT
  1728. CASE
  1729. WHEN tt.bnum = 0 THEN '配偶未投保'
  1730. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为配偶投保'
  1731. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为配偶投保'
  1732. END
  1733. FROM (
  1734. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1735. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '配偶' GROUP BY p.customerno
  1736. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1737. ) tt WHERE tt.customerno = si1.scustid
  1738. );
  1739. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  1740. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  1741. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  1742. SELECT
  1743. CASE
  1744. WHEN temp.cnt >0 THEN
  1745. '有1年期短险保单'
  1746. END
  1747. FROM
  1748. (
  1749. SELECT
  1750. count(1) cnt,
  1751. policy.customerno
  1752. FROM
  1753. policy_information policy
  1754. where
  1755. policy.SECURITY in('1年','6月','180天')
  1756. and
  1757. policy.riskperiod='短期险'
  1758. and
  1759. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1760. GROUP BY
  1761. policy.customerno
  1762. ) temp
  1763. WHERE
  1764. temp.customerno = si1.scustid
  1765. );*/
  1766. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  1767. SELECT
  1768. CASE
  1769. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  1770. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  1771. END
  1772. FROM (
  1773. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1774. SELECT
  1775. count(1) cnt,
  1776. po.customerno
  1777. FROM
  1778. dsj.policy_information po
  1779. where
  1780. po.SECURITY in('1年','6月','180天')
  1781. and
  1782. po.riskperiod='短期险'
  1783. and
  1784. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1785. GROUP BY
  1786. po.customerno
  1787. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  1788. ) temp where temp.customerno = si1.scustid
  1789. );
  1790. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  1791. -- 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')
  1792. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  1793. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' )
  1794. );
  1795. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  1796. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  1797. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  1798. );
  1799. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  1800. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  1801. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  1802. select otherno from dsj.ljspay where othernotype = '2'
  1803. )
  1804. );
  1805. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  1806. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  1807. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  1808. );
  1809. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  1810. --第一步
  1811. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  1812. SELECT fadate FROM (
  1813. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  1814. ) t WHERE t.customerno = si1.scustid
  1815. );
  1816. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  1817. SELECT fadate FROM (
  1818. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  1819. ) t WHERE t.insuredno = si1.scustid
  1820. );
  1821. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  1822. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  1823. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  1824. SELECT fadate FROM (
  1825. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  1826. ) t WHERE t.customerno = si1.scustid
  1827. );
  1828. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  1829. SELECT fadate FROM (
  1830. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  1831. ) t WHERE t.insuredno = si1.scustid
  1832. );
  1833. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  1834. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  1835. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  1836. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  1837. WHERE p.salecomname IS NOT null
  1838. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1839. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  1840. --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
  1841. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1842. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  1843. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  1844. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  1845. -- 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
  1846. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1847. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  1848. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  1849. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  1850. 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
  1851. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1852. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  1853. --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
  1854. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1855. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  1856. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  1857. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  1858. -- 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
  1859. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1860. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  1861. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  1862. /*
  1863. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  1864. (SELECT
  1865. (CASE temp.appflag
  1866. WHEN '0' THEN '最近保单状态未承保'
  1867. WHEN '1' THEN '最近保单状态承保'
  1868. WHEN '2' THEN '最近保单状态新增附加险'
  1869. WHEN '4' THEN '最近保单状态终止'
  1870. WHEN '9' THEN '最近保单状态续保'
  1871. WHEN 'B' THEN '最近保单状态未对账'
  1872. WHEN 'F' THEN '最近保单状态对账失败'
  1873. END) a
  1874. FROM (
  1875. 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
  1876. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  1877. */
  1878. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  1879. SELECT '最近保单状态'||trim(t.appflag) FROM (
  1880. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  1881. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1882. );
  1883. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  1884. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  1885. SELECT '客户最近一次办理'||t.edorname FROM (
  1886. SELECT
  1887. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  1888. l.edortype,
  1889. l.contno,
  1890. p.customerno,
  1891. l.edorappdate,
  1892. l.edorstate,
  1893. lm.edorcode,
  1894. lm.edorname
  1895. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  1896. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  1897. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  1898. ) WHERE 1 = 1;
  1899. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  1900. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  1901. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1902. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  1903. )
  1904. );
  1905. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  1906. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  1907. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  1908. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  1909. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1910. );
  1911. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  1912. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  1913. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  1914. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  1915. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1916. );
  1917. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  1918. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  1919. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  1920. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  1921. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1922. );
  1923. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  1924. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  1925. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  1926. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1927. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  1928. )
  1929. );
  1930. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  1931. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  1932. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  1933. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1934. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  1935. ) and p.appflag = '有效'
  1936. );
  1937. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  1938. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  1939. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  1940. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  1941. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  1942. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  1943. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  1944. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  1945. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  1946. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  1947. GROUP BY pi.customerno
  1948. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  1949. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  1950. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  1951. SELECT temp.customerno FROM (
  1952. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  1953. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  1954. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  1955. GROUP BY pi.customerno
  1956. ) temp WHERE temp.tnum = temp.pnum
  1957. );
  1958. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  1959. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  1960. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  1961. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  1962. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  1963. WHERE p.appflag = '有效' GROUP BY p.customerno
  1964. ) t WHERE t.pnum > 0);
  1965. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  1966. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  1967. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  1968. CASE si1.CustClass
  1969. WHEN 1 THEN '钻石客户'
  1970. WHEN 2 THEN '白金客户'
  1971. WHEN 3 THEN '黄金客户'
  1972. --WHEN 4 THEN '普通级别'
  1973. --ELSE '无级别'
  1974. ELSE ''
  1975. END
  1976. ) where 1 = 1;
  1977. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  1978. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  1979. SELECT '最近'||t.scenario FROM (
  1980. SELECT
  1981. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  1982. pl.partyid,
  1983. pl.scenario
  1984. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  1985. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  1986. );
  1987. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  1988. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  1989. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  1990. SELECT
  1991. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  1992. pl.partyid,
  1993. pl.scenario
  1994. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  1995. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  1996. );
  1997. --77 是否关注官微 Label73 关注官微 无 0
  1998. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  1999. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  2000. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  2001. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  2002. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  2003. --78 是否注册官微 Label74 注册官微 无 0
  2004. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  2005. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2006. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2007. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  2008. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  2009. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  2010. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2011. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2012. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  2013. );
  2014. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  2015. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2016. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2017. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  2018. );
  2019. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  2020. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  2021. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  2022. --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;
  2023. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  2024. SELECT scustid FROM (
  2025. SELECT * FROM (
  2026. 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
  2027. , day(to_date(birthday)) userday from shanglifeecif.Individual
  2028. )
  2029. WHERE
  2030. (nowmonth != nextmonth AND
  2031. (
  2032. (nowmonth== usermonth AND userday> nowday )
  2033. or (nextmonth == usermonth AND userday <= nextday )
  2034. )
  2035. )
  2036. OR (nowmonth == nextmonth AND nowmonth == usermonth AND userday > nowday AND userday <=nextday )
  2037. )
  2038. );
  2039. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' WHERE si1.scustid IN (
  2040. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2041. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2042. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '父亲'
  2043. );
  2044. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  2045. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2046. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2047. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  2048. );
  2049. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  2050. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2051. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2052. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  2053. );
  2054. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' WHERE si1.scustid IN (
  2055. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2056. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2057. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '女儿'
  2058. );
  2059. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  2060. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  2061. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2062. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  2063. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  2064. );
  2065. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2066. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  2067. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2068. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  2069. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2070. );
  2071. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2072. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  2073. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2074. 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
  2075. );
  2076. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2077. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  2078. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2079. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2080. );
  2081. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2082. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2083. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2084. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  2085. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2086. GROUP BY pi.customerno
  2087. ) temp WHERE temp.tnum = temp.pnum);
  2088. --失效原因
  2089. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  2090. SELECT '有'||t.terminatestate||'保单' FROM (
  2091. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2092. WHERE p.appflag = '中止'
  2093. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2094. );
  2095. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  2096. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2097. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2098. --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
  2099. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2100. --GROUP BY pi.customerno
  2101. --) temp WHERE temp.tnum = temp.pnum);
  2102. --终止原因
  2103. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  2104. SELECT '有'||t.terminatestate||'保单' FROM (
  2105. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2106. WHERE p.appflag = '终止'
  2107. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2108. );
  2109. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  2110. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2111. --SELECT
  2112. --CASE
  2113. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  2114. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  2115. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  2116. --END
  2117. -- FROM (
  2118. -- 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 (
  2119. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  2120. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  2121. -- ) t LEFT JOIN (
  2122. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  2123. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  2124. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  2125. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  2126. --) WHERE 1 = 1;
  2127. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2128. -- SELECT
  2129. -- CASE
  2130. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  2131. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  2132. -- WHEN t.dnum>60 THEN '宽限期外交费'
  2133. -- END
  2134. -- FROM (
  2135. -- 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
  2136. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  2137. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  2138. --) WHERE 1 = 1;
  2139. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2140. SELECT
  2141. CASE
  2142. WHEN t.dnum=0 THEN '上一年如期缴费'
  2143. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  2144. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  2145. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  2146. END
  2147. FROM (
  2148. SELECT
  2149. 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
  2150. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  2151. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  2152. ) WHERE 1 = 1;
  2153. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  2154. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  2155. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2156. SELECT contnos from dsj.cc_record_main
  2157. )
  2158. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  2159. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  2160. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  2161. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2162. SELECT contnos from dsj.cc_record_main
  2163. )
  2164. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  2165. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  2166. 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;
  2167. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  2168. --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
  2169. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  2170. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  2171. SELECT '长通话' FROM (
  2172. SELECT
  2173. t.contnos,
  2174. row_number()OVER(PARTITION BY p.customerno) rn,
  2175. p.customerno
  2176. FROM (
  2177. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  2178. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  2179. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  2180. GROUP BY m.contnos
  2181. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  2182. WHERE t.avgcalltime>600
  2183. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  2184. );
  2185. --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%'" 每次来电均下转办单的
  2186. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  2187. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2188. SELECT temp.policyno FROM (
  2189. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2190. 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
  2191. UNION
  2192. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  2193. )t GROUP BY t.policyno
  2194. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  2195. )
  2196. );
  2197. --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%'" 咨询转办单项目为投诉
  2198. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  2199. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2200. SELECT temp.policyno FROM (
  2201. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2202. 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
  2203. UNION
  2204. 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
  2205. )t GROUP BY t.policyno
  2206. ) temp WHERE temp.mnum = temp.fnum
  2207. )
  2208. );
  2209. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  2210. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  2211. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  2212. --(SELECT temp.productno FROM (
  2213. --SELECT t.productno,t.sinserttime,
  2214. --(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
  2215. --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
  2216. -- FROM
  2217. --(
  2218. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  2219. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  2220. --) t
  2221. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  2222. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  2223. SELECT t.customerno FROM (
  2224. SELECT
  2225. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2226. t1.customerno,
  2227. t1.contno,
  2228. ca.inserttime FROM (
  2229. SELECT
  2230. max(p.customerno) customerno,
  2231. p.contno
  2232. FROM dsj.policy_information p GROUP BY p.contno
  2233. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2234. ) t LEFT JOIN (
  2235. SELECT
  2236. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2237. t1.customerno,
  2238. t1.contno,
  2239. ca.inserttime FROM (
  2240. SELECT
  2241. max(p.customerno) customerno,
  2242. p.contno
  2243. FROM dsj.policy_information p GROUP BY p.contno
  2244. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2245. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  2246. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  2247. );
  2248. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  2249. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  2250. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  2251. SELECT
  2252. CASE
  2253. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  2254. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  2255. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  2256. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  2257. select group_concat((case c.complaintsSource
  2258. when '911' then '来电'
  2259. when '912' then '来访'
  2260. when '913' then '来函'
  2261. when '914' then '保监会转办'
  2262. when '919' then '保监局转办'
  2263. when '915' then '媒体转办'
  2264. when '916' then '同业公会'
  2265. when '917' then '其他转办'
  2266. when '918' then '呼出'
  2267. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  2268. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  2269. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  2270. ) tt WHERE tt.customerno = si1.scustid
  2271. );
  2272. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  2273. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  2274. --02个险渠道 期缴 大于20000以上
  2275. --03银保渠道 期缴 大于50000以上
  2276. --06健康险 期缴 大于 20000以上
  2277. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  2278. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  2279. p.appflag = '有效' AND p.payintv = '期缴' and
  2280. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  2281. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  2282. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  2283. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  2284. );
  2285. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  2286. 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) );
  2287. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  2288. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  2289. 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 = '立案')
  2290. );
  2291. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  2292. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  2293. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2294. 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'
  2295. )
  2296. );
  2297. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  2298. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  2299. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2300. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  2301. )
  2302. );
  2303. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  2304. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  2305. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2306. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  2307. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  2308. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  2309. )
  2310. );
  2311. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  2312. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  2313. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  2314. 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
  2315. );
  2316. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  2317. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  2318. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  2319. dbms_output.put_line('updateindividuallable函数跑批完成!');
  2320. EXCEPTION
  2321. WHEN HIVE_EXCEPTION THEN
  2322. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2323. WHEN Others THEN
  2324. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2325. END;