update.sql 139 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486
  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.partytimeline_main()
  883. IS
  884. BEGIN
  885. DELETE FROM shanglifeecif.partytimeline;
  886. shanglifeecif.partytimeline_tb();
  887. shanglifeecif.partytimeline_lp();
  888. shanglifeecif.partytimeline_zx();
  889. shanglifeecif.partytimeline_bq();
  890. shanglifeecif.partytimeline_tuibao();
  891. shanglifeecif.partytimeline_ts();
  892. shanglifeecif.partytimeline_hf();
  893. shanglifeecif.partytimeline_xq();
  894. -- 更新渠道字段
  895. shanglifeecif.update_partytimeline_add_salecom();
  896. END;
  897. CREATE OR REPLACE PROCEDURE shanglifeecif.update_customerno_salecom_relation_labels() IS
  898. -- 标签值分渠道计算,并将计算结果存入shanglifeecif.customerno_salecom_relation表
  899. -- 该表不存储跟渠道的标签值(也就是”上海人寿“渠道),只存储下面子渠道的标签值
  900. BEGIN
  901. -- 1. 是否持有寿险有效保单 label24
  902. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label24 = '持有寿险有效保单' WHERE exists (
  903. 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 = '人寿保险')
  904. );
  905. -- 2. 保单件数区间 label25 参考bdnum_distribution.sql : 4行
  906. -- 在 shanglifeecif.bdnum_distribution() 中处理
  907. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label25 = (
  908. select
  909. CASE
  910. WHEN t.n = 0 THEN '无保单'
  911. WHEN t.n = 1 THEN '1件保单'
  912. WHEN t.n = 2 THEN '2件保单'
  913. WHEN t.n between 3 and 5 THEN '3-5件保单'
  914. WHEN t.n between 6 and 10 THEN '6-10件保单'
  915. WHEN t.n between 11 and 20 THEN '11-20件保单'
  916. WHEN t.n between 21 and 50 THEN '21-50件保单'
  917. WHEN t.n > 50 THEN '50件保单以上'
  918. END
  919. from (
  920. SELECT customerno, salecom, count(1) as n FROM dsj.policy_information p WHERE appflag IS NOT NULL group by customerno, salecom
  921. ) t
  922. where
  923. si1.scustid = t.customerno
  924. and si1.salecom = t.salecom
  925. );
  926. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET (
  927. -- si1.NOVPolicy -- 有效保单数
  928. -- , si1.noivpolicy -- 无效保单数
  929. -- , si1.Label25 --总保单数
  930. -- ) = (
  931. -- SELECT
  932. -- valid_num
  933. -- , invalid_num
  934. -- , total
  935. -- FROM (
  936. -- SELECT
  937. -- customerno
  938. -- , salecom
  939. -- , sum(CASE WHEN appflag = '有效' THEN 1 ELSE 0 end) AS valid_num -- 有效保单数
  940. -- , sum(CASE WHEN appflag <> '有效' THEN 1 ELSE 0 end) AS invalid_num -- 无效保单数
  941. -- , count(1) AS total --总保单数
  942. -- FROM (
  943. -- SELECT customerno, salecom, contno, appflag
  944. -- FROM dsj.policy_information p WHERE appflag IS NOT NULL GROUP BY customerno, salecom, contno, appflag
  945. -- ) t
  946. -- GROUP BY customerno, salecom
  947. -- ) s
  948. -- WHERE si1.scustid = s.customerno AND si1.salecom = s.salecom
  949. -- )
  950. -- WHERE 1 = 1;
  951. -- 3. 是否贷款 label26
  952. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label26 = '有保单贷款' WHERE exists (
  953. 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 (
  954. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  955. )
  956. );
  957. -- 4. 是否有极短意保单 label27
  958. -- UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  959. -- SELECT
  960. -- CASE
  961. -- WHEN t.cnt > 0 AND t.cnt = t.tnum THEN '仅极短意外险'
  962. -- WHEN t.cnt > 0 AND t.cnt <> t.tnum THEN '有极短意外险'
  963. -- END
  964. -- FROM (
  965. -- SELECT
  966. -- po.customerno
  967. -- , po.salecom
  968. -- , SUM(
  969. -- CASE
  970. -- WHEN
  971. -- po.SECURITY in('7天','15天','30天','90天','1月','3月')
  972. -- AND po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  973. -- THEN 1
  974. -- ELSE 0
  975. -- END
  976. -- ) AS cnt
  977. -- , COUNT(1) AS tnum
  978. -- FROM dsj.policy_information po
  979. -- WHERE
  980. -- po.riskperiod='短期险'
  981. -- GROUP BY customerno, salecom
  982. -- ) t
  983. -- WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  984. -- );
  985. --------------
  986. -- 4. 是否有极短意保单 label27(方式二)
  987. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label27 = (
  988. SELECT
  989. CASE
  990. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  991. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  992. END
  993. FROM (
  994. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  995. SELECT
  996. count(1) cnt
  997. , po.customerno
  998. , po.salecom
  999. FROM
  1000. dsj.policy_information po
  1001. where
  1002. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  1003. and
  1004. po.riskperiod='短期险'
  1005. and
  1006. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1007. GROUP BY
  1008. po.customerno, po.salecom
  1009. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and p.salecom = t.salecom GROUP BY p.customerno, p.salecom
  1010. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1011. );
  1012. -- 5. 是否有趸交保单 Label29
  1013. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label29 = '有趸交保单' WHERE exists (
  1014. SELECT p.customerno FROM dsj.policy_information p, dsj.PREMIUM_LIST l
  1015. 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 '%一次交清%'
  1016. );
  1017. -- 6. 是否给本人投保 Label30
  1018. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label30 = (
  1019. SELECT
  1020. CASE
  1021. WHEN tt.bnum = 0 THEN '本人未投保'
  1022. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  1023. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  1024. END
  1025. FROM (
  1026. SELECT t.customerno, t.salecom, MAX(t.bnum) bnum, count(*) as tnum FROM (
  1027. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno, p.salecom
  1028. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1029. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1030. );
  1031. -- 7. 是否给父母投保 Label31
  1032. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label31 = (
  1033. SELECT
  1034. CASE
  1035. WHEN tt.bnum = 0 THEN '父母未投保'
  1036. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  1037. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  1038. END
  1039. FROM (
  1040. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1041. SELECT count(*) AS bnum,p.customerno, p.salecom FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  1042. GROUP BY p.customerno, p.salecom
  1043. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1044. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1045. );
  1046. -- 8. 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  1047. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label32 = (
  1048. SELECT
  1049. CASE
  1050. WHEN tt.bnum = 0 THEN '子女未投保'
  1051. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  1052. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  1053. END
  1054. FROM (
  1055. SELECT t.customerno, t.salecom,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1056. 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
  1057. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom GROUP BY t.customerno, t.salecom
  1058. ) tt WHERE tt.customerno = si1.scustid and tt.salecom = si1.salecom
  1059. );
  1060. -- 9. 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  1061. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label33 = (
  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. -- 10. 是否仅有1年期短险保单 Label43
  1075. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label43 = (
  1076. SELECT
  1077. CASE
  1078. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  1079. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  1080. END
  1081. FROM (
  1082. SELECT p.customerno, p.salecom,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1083. SELECT
  1084. count(1) cnt,
  1085. po.customerno,
  1086. po.salecom
  1087. FROM
  1088. dsj.policy_information po
  1089. where
  1090. po.SECURITY in('1年','6月','180天')
  1091. and
  1092. po.riskperiod='短期险'
  1093. and
  1094. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1095. GROUP BY
  1096. po.customerno, po.salecom
  1097. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno and t.salecom = p.salecom GROUP BY p.customerno, p.salecom
  1098. ) temp where temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1099. );
  1100. -- 11. 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  1101. -- 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')
  1102. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label44 = '有失效保单' WHERE exists (
  1103. 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' )
  1104. );
  1105. -- 12. 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  1106. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label45 = '有缴费期满长险保单' WHERE exists (
  1107. 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='长期险'
  1108. );
  1109. -- 13. 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  1110. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label46 = '有续期缴费保单' WHERE exists (
  1111. 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 (
  1112. select otherno from dsj.ljspay where othernotype = '2'
  1113. )
  1114. );
  1115. -- 14. 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  1116. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label47 = '有责任期满的保单' WHERE exists (
  1117. 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")
  1118. );
  1119. -- 15. 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  1120. --第一步
  1121. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  1122. SELECT fadate FROM (
  1123. 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
  1124. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  1125. );
  1126. -- 第二步
  1127. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.FADate = (
  1128. SELECT fadate FROM (
  1129. 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
  1130. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  1131. );
  1132. -- 第三步
  1133. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  1134. -- 16. 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  1135. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  1136. SELECT fadate FROM (
  1137. 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
  1138. ) t WHERE t.customerno = si1.scustid and t.salecom = si1.salecom
  1139. );
  1140. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.LAPPDate = (
  1141. SELECT fadate FROM (
  1142. 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
  1143. ) t WHERE t.insuredno = si1.scustid and t.salecom = si1.salecom
  1144. );
  1145. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  1146. /*
  1147. * 二期分渠道计算标签值时这两个标签只有根渠道显示(也就是”上海人寿“渠道),其他渠道不展示
  1148. -- 17. 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  1149. -- 原始逻辑
  1150. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  1151. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  1152. WHERE p.salecomname IS NOT null
  1153. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1154. -- 18. 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  1155. -- 原始逻辑
  1156. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  1157. 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
  1158. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1159. */
  1160. -- 19. 最近保单状态 Label54
  1161. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label54 = (
  1162. SELECT '最近保单状态'||trim(t.appflag) FROM (
  1163. 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
  1164. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno AND si1.salecom = t.salecom
  1165. );
  1166. -- 20. 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  1167. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label55 = (
  1168. SELECT '客户最近一次办理'||t.edorname FROM (
  1169. SELECT
  1170. row_number() over(partition by p.customerno, p.salecom ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  1171. l.edortype,
  1172. l.contno,
  1173. p.customerno,
  1174. p.salecom,
  1175. l.edorappdate,
  1176. l.edorstate,
  1177. lm.edorcode,
  1178. lm.edorname
  1179. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  1180. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  1181. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1182. ) WHERE 1 = 1;
  1183. -- 21. 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  1184. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label56 = '有退保保单' WHERE exists (
  1185. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  1186. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  1187. )
  1188. );
  1189. -- 22. 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  1190. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label57 = (
  1191. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  1192. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE, p.salecom
  1193. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1194. WHERE c.contno = p.contno
  1195. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1196. );
  1197. -- 23. 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  1198. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label58 = (
  1199. SELECT "最近一次出险类型" || t.lloccurreason FROM (
  1200. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.lloccurreason, p.salecom
  1201. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1202. WHERE c.contno = p.contno
  1203. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1204. );
  1205. -- 24. 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  1206. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label59 = (
  1207. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  1208. SELECT row_number()OVER(PARTITION BY c.insuredno, p.salecom ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE, p.salecom
  1209. FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p WHERE c.contno = p.contno
  1210. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid and t.salecom = si1.salecom
  1211. );
  1212. -- 25. 是否有满期给付保单 Label61 有满期给付保单
  1213. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label61 = '有满期给付保单' WHERE exists (
  1214. SELECT p.customerno FROM dsj.policy_information p WHERE si1.scustid = p.customerno and si1.salecom = p.salecom and p.contno IN (
  1215. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  1216. )
  1217. );
  1218. -- 26. 是否有生存金给付的保单 Label62 有生存金给付保单 无
  1219. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label62 = '有生存金给付的保单' WHERE exists (
  1220. 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 (
  1221. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  1222. )
  1223. );
  1224. -- 27. 是否有红利可领取的保单 Label64 有红利可领取保单 无
  1225. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label64 = '红利可领取的保单' WHERE exists (
  1226. SELECT p.customerno FROM dsj.policy_information p, dsj.lmriskapp l
  1227. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1
  1228. );
  1229. -- 28. 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  1230. /*
  1231. 一张保单对应一个保单号 contno,但表里会有重复保单号,因为一个保单会包含多个险种 riskcode,包含了几个险种就会有几条重复记录。
  1232. 如果客户只购买了一张保单,不管保单中包含多少个险种,只要包含“新型寿险”或“人寿保险”险种就认为是一单寿险客户
  1233. */
  1234. /*
  1235. -- 旧方法,性能低
  1236. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (SELECT temp.customerno FROM (
  1237. SELECT pi.customerno, pi.salecom, count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  1238. SELECT count(DISTINCT p.contno) AS pnum, p.customerno, p.salecom FROM dsj.POLICY_INFORMATION p
  1239. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  1240. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno, p.salecom
  1241. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1242. GROUP BY pi.customerno, pi.salecom
  1243. )temp WHERE temp.tnum = temp.pnum AND tnum = 1 and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  1244. */
  1245. ----------- 方法二
  1246. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label65 = '一单寿险客户' WHERE exists (
  1247. SELECT
  1248. customerno
  1249. , salecom
  1250. , count(DISTINCT contno) AS c -- 保单号去重后统计该客户总共有多少保单
  1251. , sum(
  1252. CASE
  1253. WHEN b.kindtype IN ('人寿保险', '新型寿险') THEN 1
  1254. ELSE 0
  1255. END
  1256. ) AS s -- 统计寿险有几条记录
  1257. FROM dsj.POLICY_INFORMATION p, dsj.riskkind b
  1258. WHERE p.riskcode = b.riskcode AND p.customerno = si1.scustid AND p.salecom = si1.salecom
  1259. GROUP BY customerno, salecom
  1260. HAVING c = 1 AND s > 0 -- 筛选只有一个保单且包含寿险的客户
  1261. );
  1262. -- 29. 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  1263. /*
  1264. -- 旧方法,性能低
  1265. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  1266. SELECT temp.customerno FROM (
  1267. SELECT count(*) AS tnum, t.customerno, t.salecom, max(t.pnum) AS pnum FROM (
  1268. SELECT p.customerno, p.salecom, count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno, p.salecom
  1269. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1270. GROUP BY t.customerno, t.salecom
  1271. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom
  1272. );
  1273. */
  1274. --------------- 方法二
  1275. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label66 = '缴费期满客户' WHERE exists (
  1276. SELECT
  1277. p.customerno
  1278. , p.salecom
  1279. -- , count(1) AS c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  1280. , sum(
  1281. case
  1282. when p.paycount = p.payendyear then 1
  1283. else 0
  1284. end
  1285. ) AS s
  1286. FROM dsj.policy_information p
  1287. WHERE p.customerno = si1.scustid and p.salecom = si1.salecom
  1288. GROUP BY p.customerno, p.salecom
  1289. HAVING count(1) = s
  1290. );
  1291. -- 30. 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  1292. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label68 = '持有有效保单' WHERE exists (
  1293. SELECT salecom FROM dsj.POLICY_INFORMATION p WHERE p.appflag = '有效' and p.customerno = si1.scustid and p.salecom = si1.salecom
  1294. );
  1295. -- 31. 父母生日提醒 Label78 父亲生日临近 | 母亲生日临近 客户父母生日-当前日期<=5
  1296. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label78 = (
  1297. SELECT
  1298. case max(p.insuredsex)
  1299. when '0' then '父亲生日临近'
  1300. when '1' then '母亲生日临近'
  1301. end as s
  1302. from dsj.POLICY_INFORMATION p
  1303. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1304. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday > p.insuredbirthday -- 父母关系,并且投保人 > 被保人(也就是晚辈给长辈买保险,被保人是长辈)
  1305. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  1306. );
  1307. -- 32. 子女生日提醒 Label79 儿子生日临近 | 女儿生日临近 客户子女生日-当前日期<=5
  1308. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label79 = (
  1309. SELECT
  1310. case max(p.insuredsex)
  1311. when '0' then '儿子生日临近'
  1312. when '1' then '女儿生日临近'
  1313. end as s
  1314. from dsj.POLICY_INFORMATION p
  1315. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1316. and (p.RELATIONTOAPPNT = '父母' OR p.RELATIONTOAPPNT = '子女') and p.birthday < p.insuredbirthday -- 父母关系,并且投保人 < 被保人(也就是长辈给晚辈买保险,被保人是晚辈)
  1317. and (DATEDIFF(to_char(p.insuredbirthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd")) between 1 and 5)
  1318. );
  1319. -- 33. 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  1320. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label81 = '近期咨询过理赔' WHERE exists (
  1321. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.customerno = si1.scustid and dp.salecom = si1.salecom and dp.contno IN (
  1322. SELECT rm.contnos FROM dsj.cc_record_main rm
  1323. WHERE rm.reasonsecondname LIKE '%理赔%' and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  1324. );
  1325. -- 34. 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  1326. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label88 = '续期临期未缴费' WHERE exists (
  1327. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  1328. 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
  1329. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1330. );
  1331. -- 35. 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  1332. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label89 = '续期到期未缴费' WHERE exists (
  1333. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  1334. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  1335. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1336. );
  1337. -- 36. 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  1338. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE exists (SELECT temp.customerno FROM (
  1339. SELECT count(*) AS tnum,max(t.customerno) AS customerno, max(t.salecom) as salecom,max(t.pnum) AS pnum FROM (
  1340. SELECT p.customerno, p.salecom,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno, p.salecom
  1341. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno and pi.salecom = t.salecom
  1342. GROUP BY pi.customerno, pi.salecom
  1343. ) temp WHERE temp.tnum = temp.pnum and temp.customerno = si1.scustid and temp.salecom = si1.salecom);
  1344. /*
  1345. -- 方法二(性能反而慢,原因待查)
  1346. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label91 = '失效客户' WHERE EXISTS (
  1347. SELECT
  1348. p.customerno
  1349. , p.salecom
  1350. -- , count(1) as c -- 不知道为什么会报错“not support udaf count in subquery for join conversion”,count(1)写在having中就没有错
  1351. , sum(
  1352. case
  1353. when p.appflag <> '有效' then 1
  1354. else 0
  1355. end
  1356. ) as s
  1357. from dsj.policy_information p
  1358. where p.customerno = si1.scustid and p.salecom = si1.salecom
  1359. group by p.customerno, p.salecom
  1360. having count(1) = s
  1361. );
  1362. */
  1363. -- 37. 失效原因 Label92
  1364. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label92 = (
  1365. SELECT '有'||t.terminatestate||'保单' FROM (
  1366. 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
  1367. WHERE p.appflag = '中止'
  1368. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1369. );
  1370. -- 38. 终止原因 Label94
  1371. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label94 = (
  1372. SELECT '有'||t.terminatestate||'保单' FROM (
  1373. 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
  1374. WHERE p.appflag = '终止'
  1375. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno and si1.salecom = t.salecom
  1376. );
  1377. -- 39. 上年续期交费情况 Label95
  1378. -- 通过contno与dsj.policy_information表关联会有关联不上的数据,关联不上的数据不做处理
  1379. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label95 = (
  1380. SELECT
  1381. CASE
  1382. WHEN t.dnum=0 THEN '上一年如期缴费'
  1383. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  1384. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  1385. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  1386. END
  1387. FROM (
  1388. SELECT
  1389. 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
  1390. FROM dsj.ljapayperson l, dsj.policy_information p WHERE p.contno = l.contno and l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  1391. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid and t.salecom = si1.salecom
  1392. );
  1393. -- 40. 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  1394. -- 二期只计算这3个渠道
  1395. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  1396. --02个险渠道 期缴 大于20000以上
  1397. --03银保渠道 期缴 大于50000以上
  1398. --06健康险 期缴 大于 20000以上
  1399. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label107 = '高金额' WHERE exists (
  1400. SELECT p.customerno FROM dsj.policy_information p WHERE
  1401. p.appflag = '有效' AND p.payintv = '期缴' and
  1402. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000))
  1403. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1404. );
  1405. -- 41. 最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  1406. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label108 = '最近理赔结案' WHERE exists (
  1407. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c, dsj.policy_information p
  1408. WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  1409. and p.contno = c.contno and c.insuredno = si1.scustid and p.salecom = si1.salecom
  1410. );
  1411. -- 42. 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  1412. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label109 = '理赔报案追踪' WHERE exists (
  1413. 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 (
  1414. SELECT c.CONTNO FROM dsj.insurance_claim c WHERE c.LLCLAIMSTATE = '报案' AND DATEDIFF(sysdate(), c.RPTDATE) <30
  1415. )
  1416. );
  1417. -- 43. 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  1418. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label110 = '理赔处理中' WHERE exists (
  1419. 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 (
  1420. SELECT c.contno FROM dsj.INSURANCE_CLAIM c WHERE c.llclaimstate = '受理' OR c.llclaimstate = '立案'
  1421. )
  1422. );
  1423. -- 44. 最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  1424. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label111 = '最近保全完成' WHERE exists (
  1425. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and p.salecom = si1.salecom and p.contno IN (
  1426. 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'
  1427. )
  1428. );
  1429. -- 45. 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  1430. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label113 = '生存金未领' WHERE exists (
  1431. 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 (
  1432. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  1433. )
  1434. );
  1435. -- 46. 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  1436. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label115 = '红利垫缴还款' WHERE exists (
  1437. 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 (
  1438. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  1439. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  1440. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  1441. )
  1442. );
  1443. -- 47. 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  1444. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.label117 = '宽限期' WHERE exists (
  1445. SELECT p.customerno FROM dsj.policy_information p WHERE
  1446. p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  1447. 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
  1448. and p.customerno = si1.scustid and p.salecom = si1.salecom
  1449. );
  1450. --48. 重点银行 Label120 重点银行
  1451. -- 二期只计算银保渠道(03)
  1452. UPDATE shanglifeecif.customerno_salecom_relation si1 SET si1.Label120 = '重点银行' WHERE exists (
  1453. SELECT p.customerno FROM dsj.policy_information p WHERE p.customerno = si1.scustid and si1.salecom = '03' and p.AGENTCOM LIKE '%招商银行%'
  1454. );
  1455. dbms_output.put_line('update_customerno_salecom_relation_labels 函数跑批完成!');
  1456. EXCEPTION
  1457. WHEN HIVE_EXCEPTION THEN
  1458. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1459. WHEN Others THEN
  1460. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  1461. END;
  1462. CREATE OR REPLACE PROCEDURE shanglifeecif.updateindividuallable() IS
  1463. DECLARE
  1464. BEGIN
  1465. --1 学历 label1 按照客户最新记录中的学历取值 幼儿园、小学、中专、职高、技校、初中、高中、大专、本科、硕士及以上、其他
  1466. UPDATE shanglifeecif.Individual si1 SET si1.label1 = si1.Education where si1.Education is not null;
  1467. --2 职业 label2 按照客户最新记录中的职业名称取值 食用调料制作工、味精制作工、糕点、面包烘焙工、米面主食制作工、油脂制品工等
  1468. UPDATE shanglifeecif.Individual si1 SET si1.label2 = si1.Occupation where si1.Occupation is not null;
  1469. --3 出生日期区间 label3 根据出生日期,判断客户年代归属 60后、70后、80后、90后、00后、10后等
  1470. UPDATE shanglifeecif.Individual si1 SET si1.label3 = substr(si1.birthday,3,1) || '0后' where 1 = 1;
  1471. --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 '老年'" 儿童、少年、青年、中年、老年
  1472. --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);
  1473. --5 联系地址归属省份 label5 按照客户最近一次办理业务给出的最新联系地址取所在省名称或地级市的名称 省、直辖市:江苏、北京、上海等
  1474. --6 联系地址归属地区 label6 按照客户最近一次办理业务给出的最新联系地址取所在市名称或者地级市所在区的名称 市:苏州市、南京市等
  1475. --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离异
  1476. UPDATE shanglifeecif.Individual si1 SET si1.label9 = si1.maritalStat WHERE 1 = 1;
  1477. --UPDATE shanglifeecif.Individual si1 SET si1.label9 = (
  1478. --case si1.maritalStat
  1479. --when 1 then '未婚'
  1480. --when 2 then '已婚'
  1481. --when 3 then '丧偶'
  1482. --when 4 then '离异'
  1483. --else NULL END
  1484. --) WHERE 1 = 1;
  1485. --8 子女数量区间 label10 "根据子女登录(登记录入)数量判断 case COChild when COChild=0 then '无子女' when COChild=1 then '1孩' when COChild>0 then '2孩及以上'
  1486. --else null" 无子女、1孩、2孩及以上
  1487. UPDATE shanglifeecif.individual si1 SET si1.cochild = (
  1488. SELECT nvl(t.cnum,0) FROM (
  1489. SELECT si.indid1,count(*) AS cnum FROM shanglifeecif.IndRelationShip si
  1490. WHERE si.rstype = '子女' GROUP BY si.indid1
  1491. ) t WHERE t.indid1 = si1.scustid
  1492. ) ;
  1493. UPDATE shanglifeecif.Individual si1 SET si1.label10 = (
  1494. case
  1495. when si1.COChild=0 then '无子女'
  1496. when si1.COChild=1 then '1孩'
  1497. when si1.COChild>=2 then '2孩及以上'
  1498. else null END
  1499. ) WHERE si1.cochild is not null;
  1500. --9 最近5年是否曾或正在接受治疗 label11 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“最近五年曾或正在接受治疗”,否则不做显示 近5年有治疗,近5年无治疗
  1501. --10 是否饮酒 label12 按照该字段标识判断,只要记录中有一次标识为true,则显示“饮酒”,否则不做显示 饮酒
  1502. --11 是否吸烟 label13 按照该字段标识判断,只要记录中有一次标识为true,则显示“吸烟”,否则不做显示 吸烟
  1503. --12 是否有先天性疾病 label14 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有先天性疾病”,否则不做显示 有先天性疾病
  1504. --13 是否患过重大疾病 label15 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“患过重大疾病”,否则不做显示 患过重大疾病
  1505. --14 家族是否有遗传病史 label16 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“有遗传病”,否则不做显示 家族有遗传病史
  1506. --15 是否正在怀孕 label17 按照该字段标识最后一次更新的结果判断,如果标识为true则显示“怀孕”,否则不做显示 正在怀孕
  1507. --16 是否有早产、过期产、难产情况 label18 按照该字段标识判断,只要记录中有一次标识为true,则显示“有早产、过期产、难产情况”,否则不做显示 有早产、过期产、难产情况
  1508. --17 是否进行危险性运动 label20 按照该字段标识判断,只要记录中有一次标识为true,则显示“进行危险性运动”,否则不做显示 进行危险性运动
  1509. --18 个人年收入区间 label21 "根据个人年收入字段进行判断:case PIncome when PIncome<=120000 then '低收入' when PIncome>120000 and PIncome<=1000000 then '中产' when --PIncome>1000000 then '富人' else null" 低收入、中产、富人
  1510. --根据数据判断单位应该是万元,这里都除以10000做判断
  1511. UPDATE shanglifeecif.Individual si1 SET si1.Label21 = (
  1512. CASE
  1513. WHEN si1.pincome >=0 AND si1.pincome<=12 THEN '低收入'
  1514. WHEN si1.pincome >12 AND si1.pincome<=100 THEN '中产'
  1515. WHEN si1.pincome > 100 THEN '富人'
  1516. else null END
  1517. ) where 1 = 1;
  1518. --19 拥有车辆数量区间 label22 "根据车辆登录数量字段进行判断:case COVehicle when COVehicle=0 then '无车' when COVehicle=1 then '1辆车' when COVehicle>1 then '2辆车以上'
  1519. --else null" 无车,1辆车,2辆车及以上
  1520. UPDATE shanglifeecif.Individual si1 SET si1.Label22 = (
  1521. CASE
  1522. WHEN si1.COVehicle ==0 THEN '无车'
  1523. WHEN si1.COVehicle == 1 THEN '1辆车'
  1524. WHEN si1.COVehicle > 1 THEN '2辆车以上'
  1525. ELSE NULL END
  1526. ) where 1 = 1;
  1527. --20 拥有住房套数 label23 "根据房屋登录数量字段进行判断:case CORP when CORP=0 then '无房' when CORP=1 then '1套房' when CORP>1 then '2套房以上'
  1528. --else null" 无房,1套房,2套房及以上
  1529. UPDATE shanglifeecif.Individual si1 SET si1.Label23 = (
  1530. CASE
  1531. WHEN si1.CORP ==0 THEN '无房'
  1532. WHEN si1.CORP == 1 THEN '1套房'
  1533. WHEN si1.CORP > 1 THEN '2套房以上'
  1534. else null END
  1535. ) where 1 = 1;
  1536. --21 是否持有寿险有效保单 label24 筛选客户名下所有保单,保单中客户为投保人,保单险种大类为寿险 持有寿险有效保单
  1537. UPDATE shanglifeecif.Individual si1 SET si1.label24 = '持有寿险有效保单' WHERE si1.scustid in
  1538. (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 = '人寿保险'));
  1539. --22 保单件数区间 label25 "判断客户作为投保人所有的保单数量(有效保单数量+失效保单数量):NOVPolicy+NOIVPolicy=pCount(保单总件数)
  1540. --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件'
  1541. --when pCount>10 and pCount<21 then '10-20件'when pCount>20 and pCount<51 then '21-50件'
  1542. --when pCount>50 then '50件以上' else '无保单'" 无保单、1件保单、2件保单、3-5件保单、6-10件保单、11-20件保单、20-50件保单、50件以上保单
  1543. --第一步 更新 Individual.NOVPolicy 有效记录数
  1544. --UPDATE shanglifeecif.Individual si1 SET si1.NOVPolicy = (SELECT nvl(t.cnum,0) FROM (
  1545. --SELECT temp.customerno,count(*) AS cnum FROM (
  1546. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag = '有效' GROUP BY p.contno
  1547. --) temp GROUP BY temp.customerno
  1548. --) t WHERE t.customerno = si1.scustid);
  1549. --第二步 更新 Individual.NOIVPolicy 无效记录数
  1550. --UPDATE shanglifeecif.Individual si1 SET si1.noivpolicy = (SELECT nvl(t.cnum,0) FROM (
  1551. --SELECT temp.customerno,count(*) AS cnum FROM (
  1552. --SELECT max(p.customerno) customerno,p.contno FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.contno
  1553. --) temp GROUP BY temp.customerno
  1554. --) t WHERE t.customerno = si1.scustid);
  1555. --第三步
  1556. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  1557. --CASE
  1558. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  1559. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件'
  1560. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件'
  1561. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件'
  1562. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件'
  1563. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件'
  1564. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件'
  1565. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件以上'
  1566. --END ) where 1 = 1;
  1567. --UPDATE shanglifeecif.Individual si1 SET si1.Label25 = (
  1568. --CASE
  1569. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 0 THEN '无保单'
  1570. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 1 THEN '1件保单'
  1571. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) == 2 THEN '2件保单'
  1572. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 3 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 5 THEN '3-5件保单'
  1573. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 6 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 10 THEN '6-10件保单'
  1574. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 11 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0))<= 20 THEN '11-20件保单'
  1575. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) >= 21 AND (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) <= 50 THEN '21-50件保单'
  1576. --WHEN (nvl(si1.NOVPolicy,0) + nvl(si1.NOIVPolicy,0)) > 50 THEN '50件保单以上'
  1577. --END
  1578. --) where 1 = 1;
  1579. --23 是否贷款 label26 筛选客户为投保人的有效保单,且办理了贷款业务 有贷款
  1580. UPDATE shanglifeecif.Individual si1 SET si1.label26 = '有保单贷款' WHERE si1.scustid IN (
  1581. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  1582. SELECT contno FROM dsj.loloandetail WHERE moneytype='DK'
  1583. )
  1584. );
  1585. --24 是否有极短意保单/是否仅有极短意保单 label27 "客户为保单投保人 case AGRMNTAge(保险期限) when avg(sum(AGRMNTAges))<90 then '仅极短意外险'
  1586. --when AGRMNTAge<90 then '有极短意外险'" 仅极短意外险,有极短意外险 志广说只用判断有极短意外险不用判断仅有
  1587. /*UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  1588. SELECT
  1589. CASE
  1590. WHEN temp.cnt >0 THEN
  1591. '有极短意外险'
  1592. END
  1593. FROM
  1594. (
  1595. SELECT
  1596. count(1) cnt,
  1597. policy.customerno
  1598. FROM
  1599. policy_information policy
  1600. where
  1601. policy.SECURITY in('7天','15天','30天','90天','1月','3月')
  1602. and
  1603. policy.riskperiod='短期险'
  1604. and
  1605. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1606. GROUP BY
  1607. policy.customerno
  1608. ) temp
  1609. WHERE temp.customerno = si1.scustid
  1610. );*/
  1611. UPDATE shanglifeecif.Individual si1 SET si1.Label27 = (
  1612. SELECT
  1613. CASE
  1614. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅极短意外险'
  1615. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有极短意外险'
  1616. END
  1617. FROM (
  1618. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1619. SELECT
  1620. count(1) cnt,
  1621. po.customerno
  1622. FROM
  1623. dsj.policy_information po
  1624. where
  1625. po.SECURITY in('7天','15天','30天','90天','1月','3月')
  1626. and
  1627. po.riskperiod='短期险'
  1628. and
  1629. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1630. GROUP BY
  1631. po.customerno
  1632. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  1633. ) temp where temp.customerno = si1.scustid
  1634. );
  1635. --29 是否有趸交保单 Label29 有趸交保单 NOSPInsurance,POLICY_INFORMATION.PAYINTV='趸缴',PREMIUM_LIST.PAYMENT_PERIOD='一次交清'
  1636. UPDATE shanglifeecif.Individual si1 SET si1.Label29 = '有趸交保单' WHERE si1.scustid IN (
  1637. 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 '%一次交清%')
  1638. );
  1639. --30 是否给本人投保 Label30 仅本人投保,本人已投保,本人未投保 Iself
  1640. UPDATE shanglifeecif.Individual si1 SET si1.Label30 = (
  1641. SELECT
  1642. CASE
  1643. WHEN tt.bnum = 0 THEN '本人未投保'
  1644. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为本人投保'
  1645. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为本人投保'
  1646. END
  1647. FROM (
  1648. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1649. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE p.relationtoappnt = '本人' GROUP BY p.customerno
  1650. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1651. ) tt WHERE tt.customerno = si1.scustid
  1652. );
  1653. --32 是否给父母投保 Label31 仅父母投保,父母已投保,父母未投保 Iparent
  1654. UPDATE shanglifeecif.Individual si1 SET si1.Label31 = (
  1655. SELECT
  1656. CASE
  1657. WHEN tt.bnum = 0 THEN '父母未投保'
  1658. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为父母投保'
  1659. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为父母投保'
  1660. END
  1661. FROM (
  1662. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1663. SELECT count(*) AS bnum,p.customerno FROM dsj.policy_information p WHERE (p.RELATIONTOAPPNT = '子女' OR p.RELATIONTOAPPNT = '父母') AND p.birthday > p.insuredbirthday
  1664. GROUP BY p.customerno
  1665. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1666. ) tt WHERE tt.customerno = si1.scustid
  1667. );
  1668. --34 是否给子女投保 Label32 仅子女投保,子女已投保,子女未·投保 Ichildren
  1669. UPDATE shanglifeecif.Individual si1 SET si1.Label32 = (
  1670. SELECT
  1671. CASE
  1672. WHEN tt.bnum = 0 THEN '子女未投保'
  1673. WHEN tt.bnum > 0 and tt.bnum <> tt.tnum THEN '为子女投保'
  1674. WHEN tt.bnum > 0 and tt.bnum = tt.tnum THEN '仅为子女投保'
  1675. END
  1676. FROM (
  1677. SELECT t.customerno,MAX(t.bnum) bnum,count(*) as tnum FROM (
  1678. 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
  1679. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno GROUP BY t.customerno
  1680. ) tt WHERE tt.customerno = si1.scustid
  1681. );
  1682. --36 是否给配偶投保 Label33 仅配偶投保,配偶已投保,配偶未投保 Imate
  1683. UPDATE shanglifeecif.Individual si1 SET si1.Label33 = (
  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. --47 是否仅有1年期短险保单 Label43 仅有1年期短险保单,有1年期短险保单 "policy_information表 SECURITY in('1年','6月','180天') riskperiod=‘短期险’
  1697. --riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')" 客户为保单投保人,所有保单的保障期限为一年
  1698. /*UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  1699. SELECT
  1700. CASE
  1701. WHEN temp.cnt >0 THEN
  1702. '有1年期短险保单'
  1703. END
  1704. FROM
  1705. (
  1706. SELECT
  1707. count(1) cnt,
  1708. policy.customerno
  1709. FROM
  1710. policy_information policy
  1711. where
  1712. policy.SECURITY in('1年','6月','180天')
  1713. and
  1714. policy.riskperiod='短期险'
  1715. and
  1716. policy.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1717. GROUP BY
  1718. policy.customerno
  1719. ) temp
  1720. WHERE
  1721. temp.customerno = si1.scustid
  1722. );*/
  1723. UPDATE shanglifeecif.Individual si1 SET si1.Label43 = (
  1724. SELECT
  1725. CASE
  1726. WHEN temp.cnt > 0 AND temp.cnt = temp.tnum THEN '仅有1年期短险保单'
  1727. WHEN temp.cnt > 0 AND temp.cnt <> temp.tnum THEN '有1年期短险保单'
  1728. END
  1729. FROM (
  1730. SELECT p.customerno,max(cnt) cnt,nvl(count(*),0) tnum FROM (
  1731. SELECT
  1732. count(1) cnt,
  1733. po.customerno
  1734. FROM
  1735. dsj.policy_information po
  1736. where
  1737. po.SECURITY in('1年','6月','180天')
  1738. and
  1739. po.riskperiod='短期险'
  1740. and
  1741. po.riskcode not in('1066008','1066007','1066006','1066004','1066003','1066002','1066001','1065005','1065003','1065001','1025003')
  1742. GROUP BY
  1743. po.customerno
  1744. ) t LEFT JOIN dsj.policy_information p ON t.customerno = p.customerno GROUP BY p.customerno
  1745. ) temp where temp.customerno = si1.scustid
  1746. );
  1747. --48 是否有失效保单 Label44 有失效保单 NOIVPolicy 客户为保单投保人,持有保单中保单状态为失效 (最新文档逻辑)
  1748. -- 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')
  1749. UPDATE shanglifeecif.Individual si1 SET si1.label44 = '有失效保单' WHERE si1.scustid IN (
  1750. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag <> '有效' and p.contno IN (select contno from dsj.lccontstate where statetype = 'Available' )
  1751. );
  1752. --49 是否有缴费期满长险保单 Label45 有缴费期满长险保单 POLICY_INFORMATION:paycount= payendyear AND riskperiod='长期险' 客户持有保险期限为一年以上,剩余保费期数为0
  1753. UPDATE shanglifeecif.Individual si1 SET si1.label45 = '有缴费期满长险保单' WHERE si1.scustid IN (
  1754. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.paycount = p.payendyear AND p.riskperiod='长期险'
  1755. );
  1756. --50 是否有续期缴费的保单 Label46 有续期缴费的保单 客户为投保人,含有待缴费状态的保单
  1757. UPDATE shanglifeecif.Individual si1 SET si1.label46 = '有续期缴费保单' WHERE si1.scustid IN (
  1758. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  1759. select otherno from dsj.ljspay where othernotype = '2'
  1760. )
  1761. );
  1762. --51 有责任期满的保单 Label47 有责任期满的保单 客户持有保单含有保险期限已满的保单
  1763. UPDATE shanglifeecif.Individual si1 SET si1.label47 = '有责任期满的保单' WHERE si1.scustid IN (
  1764. SELECT p.customerno FROM dsj.policy_information p WHERE p.enddate < to_char(SYSDATE,"yyyy-MM-dd HH:mm:ss.S")
  1765. );
  1766. --52 第一张保单投保日期 Label48 首次投保日期XXXX-XX-XX FADate 客户所有保单中投保时间最早的日期
  1767. --第一步
  1768. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  1769. SELECT fadate FROM (
  1770. SELECT p.customerno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  1771. ) t WHERE t.customerno = si1.scustid
  1772. );
  1773. UPDATE shanglifeecif.Individual si1 SET si1.FADate = (
  1774. SELECT fadate FROM (
  1775. SELECT p.insuredno,min(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  1776. ) t WHERE t.insuredno = si1.scustid
  1777. );
  1778. UPDATE shanglifeecif.Individual si1 SET si1.label48 = '首次投保日期'|| to_char(si1.fadate, 'yyyy-MM-dd') WHERE si1.fadate IS NOT NULL;
  1779. --53 最后一次寿险投保距今时长 Label49 最后一次投保距今XXX天 LAPPDate 当前日期减去客户所有保单中最后一次投保的保单的投保时间
  1780. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  1781. SELECT fadate FROM (
  1782. SELECT p.customerno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.customerno
  1783. ) t WHERE t.customerno = si1.scustid
  1784. );
  1785. UPDATE shanglifeecif.Individual si1 SET si1.LAPPDate = (
  1786. SELECT fadate FROM (
  1787. SELECT p.insuredno,max(p.polapplydate) AS fadate FROM dsj.POLICY_INFORMATION p WHERE p.polapplydate IS NOT null GROUP BY p.insuredno
  1788. ) t WHERE t.insuredno = si1.scustid
  1789. );
  1790. UPDATE shanglifeecif.Individual si1 SET si1.label49 = '最后一次投保距今' || DATEDIFF(sysdate(), si1.LAPPDate) || '天' WHERE si1.lappdate IS NOT NULL;
  1791. --54 最近一次保单所属渠道 Label50 最近保单团险渠道、最近保单个人营销、最近保单银行代理、最近保单中介渠道、最近保单网销渠道 --LPChannel,InsuranceArrangement.AgentChannel 客户最后一次投保归属渠道
  1792. UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT '最近保单' || trim(t.salecomname) FROM (
  1793. SELECT p.customerno,row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.salecomname FROM dsj.POLICY_INFORMATION p
  1794. WHERE p.salecomname IS NOT null
  1795. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1796. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = (SELECT t.SALECHNL FROM (
  1797. --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
  1798. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1799. --UPDATE shanglifeecif.Individual si1 SET si1.label50 = '最近保单' || si1.label50 WHERE si1.label50 IS NOT NULL;
  1800. --55 最近一次保单所属机构 Label51 最近XX机构 LPOrg,InsuranceArrangement.AgentOrg 客户最后一次投保归属机构
  1801. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = (SELECT t.AGENTCOM FROM (
  1802. -- 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
  1803. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1804. --UPDATE shanglifeecif.Individual si1 SET si1.label51 = '最近机构' || si1.label51 WHERE si1.label51 IS NOT NULL;
  1805. --56 最早保单所属渠道 Label52 首单团险渠道、首单个人营销、首单银行代理、首单中介渠道、首单网销渠道 FAChannel 客户第一次投保时保单归属渠道
  1806. UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT '首单' || trim(t.salecomname) FROM (
  1807. 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
  1808. ) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1809. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = (SELECT t.SALECHNL FROM (
  1810. --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
  1811. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1812. --UPDATE shanglifeecif.Individual si1 SET si1.label52 = '首单' || si1.label52 WHERE si1.label52 IS NOT NULL;
  1813. --57 最早保单所属机构 Label53 首单XX机构 FAOrg 客户第一次投保时保单归属机构
  1814. --UPDATE shanglifeecif.Individual si1 SET si1.label53 = (SELECT t.AGENTCOM FROM (
  1815. -- 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
  1816. --) t WHERE t.rd = 1 AND t.customerno = si1.scustid);
  1817. --UPDATE shanglifeecif.Individual si1 SET si1.Label53 = '最近机构' || si1.Label53 WHERE si1.Label53 IS NOT NULL;
  1818. --58 最近保单状态 Label54 "未承保承保新增附加险终止续保未对账对账失败" LPState 客户最后一张保单的保单状态
  1819. /*
  1820. UPDATE shanglifeecif.Individual si1 SET si1.label54 =
  1821. (SELECT
  1822. (CASE temp.appflag
  1823. WHEN '0' THEN '最近保单状态未承保'
  1824. WHEN '1' THEN '最近保单状态承保'
  1825. WHEN '2' THEN '最近保单状态新增附加险'
  1826. WHEN '4' THEN '最近保单状态终止'
  1827. WHEN '9' THEN '最近保单状态续保'
  1828. WHEN 'B' THEN '最近保单状态未对账'
  1829. WHEN 'F' THEN '最近保单状态对账失败'
  1830. END) a
  1831. FROM (
  1832. 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
  1833. ) temp WHERE temp.rd = 1 AND si1.scustid = temp.customerno);
  1834. */
  1835. UPDATE shanglifeecif.Individual si1 SET si1.label54 = (
  1836. SELECT '最近保单状态'||trim(t.appflag) FROM (
  1837. SELECT row_number()OVER(PARTITION BY p.customerno ORDER BY p.polapplydate DESC) rd,p.customerno,p.appflag FROM dsj.policy_information p
  1838. ) t WHERE t.rd = 1 AND si1.scustid = t.customerno
  1839. );
  1840. -- 最近一次保全类型 label55 客户最后一次办理保全业务的业务类型
  1841. UPDATE shanglifeecif.Individual si1 SET si1.label55 = (
  1842. SELECT '客户最近一次办理'||t.edorname FROM (
  1843. SELECT
  1844. row_number() over(partition by p.customerno ORDER BY l.edorAPPDATE DESC,l.uwtime DESC) rn,
  1845. l.edortype,
  1846. l.contno,
  1847. p.customerno,
  1848. l.edorappdate,
  1849. l.edorstate,
  1850. lm.edorcode,
  1851. lm.edorname
  1852. FROM dsj.lpedoritem l,dsj.lmedoritem lm,dsj.policy_information p
  1853. WHERE l.edortype = lm.edorcode AND lm.appobj <> 'G' AND l.edorstate = '0' AND p.contno = l.contno
  1854. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  1855. ) WHERE 1 = 1;
  1856. --60 是否有退保保单 Label56 有退保保单 如何判断? 客户所有的保单中是否存在保单状态为退保的保单
  1857. UPDATE shanglifeecif.Individual si1 SET si1.label56 = '有退保保单' WHERE si1.scustid IN (
  1858. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1859. select contno from dsj.lpedoritem where edortype in ('CT', 'XT', 'GT') and edorstate = '0'
  1860. )
  1861. );
  1862. --61 最近一次理赔类型 Label57 --意外医疗、意外伤残、意外死亡、意外高残、意外大病、意外特种疾病、意外失业失能、意外生命末期重疾、意外豁免、疾病医疗、疾病伤残、疾病死亡、疾病高残、疾病大病、疾病特种疾病、疾病失---业失能、疾病生命末期重疾、疾病豁免 无 客户最后一次投办理理赔业务的业务类型
  1863. UPDATE shanglifeecif.Individual si1 SET si1.Label57 = (
  1864. SELECT "最近一次理赔类型" || t.ACCIDENTTYPE FROM (
  1865. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.ACCIDENTTYPE FROM dsj.INSURANCE_CLAIM c
  1866. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1867. );
  1868. --62 最近一次出险类型 Label58 疾病出险、意外出险 无 客户最后一次出险的类型
  1869. UPDATE shanglifeecif.Individual si1 SET si1.Label58 = (
  1870. SELECT "最近一次出险类型" || t.RISKTYPE FROM (
  1871. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.RISKTYPE FROM dsj.INSURANCE_CLAIM c
  1872. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1873. );
  1874. --63 最近一次理赔状态 Label59 理赔报案中、理赔已受理、理赔已立案、理赔审核中、理赔预付审批中、理赔结案、理赔完成、理赔关闭 InsuranceClaimThread.ClaimCaseStatus --客户最后一次发生理赔的理赔类型
  1875. UPDATE shanglifeecif.Individual si1 SET si1.Label59 = (
  1876. SELECT '最近一次理赔状态' || t.LLCLAIMSTATE FROM (
  1877. SELECT row_number()OVER(PARTITION BY c.insuredno ORDER BY c.applydate desc) rd,c.insuredno,c.LLCLAIMSTATE FROM dsj.INSURANCE_CLAIM c
  1878. ) t WHERE t.rd = 1 AND t.insuredno = si1.scustid
  1879. );
  1880. --65 是否有满期给付保单 Label61 有满期给付保单 如何判断? 0
  1881. --select getdutycode from lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金');
  1882. UPDATE shanglifeecif.Individual si1 SET si1.label61 = '有满期给付保单' WHERE si1.scustid IN (
  1883. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1884. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname in ('满期保险金','满期生存保险金'))
  1885. )
  1886. );
  1887. --67 是否有生存金给付的保单 Label63 有生存金给付保单 无 0
  1888. --select getdutycode from lmdutygetalive where getdutyname = '生存保险金';
  1889. UPDATE shanglifeecif.Individual si1 SET si1.label62 = '有生存金给付的保单' WHERE si1.scustid IN (
  1890. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  1891. SELECT contno FROM dsj.lcget WHERE getdutycode IN (select getdutycode from dsj.lmdutygetalive where getdutyname = '生存保险金')
  1892. ) and p.appflag = '有效'
  1893. );
  1894. --68 是否有红利可领取的保单 Label64 有红利可领取保单 无 0
  1895. UPDATE shanglifeecif.Individual si1 SET si1.label64 = '红利可领取的保单' WHERE si1.scustid IN
  1896. (SELECT p.customerno FROM dsj.policy_information p,dsj.lmriskapp l WHERE p.appflag = '有效' and p.riskcode = l.riskcode AND l.bonusflag = 1);
  1897. --69 一单寿险客户 Label65 一单寿险客户 客户仅购买了一张保单,且保单类型为寿险型保单
  1898. UPDATE shanglifeecif.Individual si1 SET si1.label65 = '一单寿险客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  1899. SELECT pi.customerno,count(DISTINCT pi.contno) AS tnum,max(t.pnum) AS pnum FROM (
  1900. SELECT count(DISTINCT p.contno) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  1901. LEFT JOIN dsj.riskkind b on p.riskcode = b.riskcode
  1902. WHERE (b.kindtype = '新型寿险' or b.kindtype = '人寿保险') GROUP BY p.customerno
  1903. ) t LEFT JOIN dsj.POLICY_INFORMATION pi ON pi.customerno = t.customerno
  1904. GROUP BY pi.customerno
  1905. )temp WHERE temp.tnum = temp.pnum AND tnum = 1);
  1906. --70 缴费期满客户 Label66 缴费期满客户 POLICY_INFORMATION:paycount= payendyear 客户缴费期数已满
  1907. UPDATE shanglifeecif.Individual si1 SET si1.label66 = '缴费期满客户' WHERE si1.scustid IN (
  1908. SELECT temp.customerno FROM (
  1909. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  1910. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.paycount = p.payendyear GROUP BY p.customerno
  1911. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  1912. GROUP BY pi.customerno
  1913. ) temp WHERE temp.tnum = temp.pnum
  1914. );
  1915. --71 生日与司庆日同一天客户 Label67 生日与司庆日同天 2月15号 为司庆日 客户生日和公司司庆日为同一天
  1916. UPDATE shanglifeecif.Individual si1 SET si1.Label67 = '生日与司庆日同天' where si1.birthday like '%-02-15%';
  1917. --72 持有有效保单产品类型客户标签 Label68 持有有效保单,未持有有效保单 客户名下是否有投保人为自己的有效保单
  1918. UPDATE shanglifeecif.Individual si1 SET si1.label68 = '持有有效保单' WHERE si1.scustid IN (SELECT t.customerno FROM (
  1919. SELECT count(*) AS pnum,p.customerno FROM dsj.POLICY_INFORMATION p
  1920. WHERE p.appflag = '有效' GROUP BY p.customerno
  1921. ) t WHERE t.pnum > 0);
  1922. --73 客户等级标签 Label69 钻石、白金、黄金、普通 Individual.CustClass 根据CustClass字段已有的等级值显示
  1923. --UPDATE shanglifeecif.Individual si1 SET si1.Label69 = si1.CustClass where 1 = 1;
  1924. UPDATE shanglifeecif.Individual si1 SET si1.Label69 = (
  1925. CASE si1.CustClass
  1926. WHEN 1 THEN '钻石客户'
  1927. WHEN 2 THEN '白金客户'
  1928. WHEN 3 THEN '黄金客户'
  1929. --WHEN 4 THEN '普通级别'
  1930. --ELSE '无级别'
  1931. ELSE ''
  1932. END
  1933. ) where 1 = 1;
  1934. --74 最近接触业务类型 Label70 最近投诉、最近问询(咨询)、最近营销、最近理赔、最近出险、最近保全 Individual.LCType 客户最后一次接触的业务类型
  1935. UPDATE shanglifeecif.Individual si1 SET si1.Label70 = (
  1936. SELECT '最近'||t.scenario FROM (
  1937. SELECT
  1938. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  1939. pl.partyid,
  1940. pl.scenario
  1941. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL
  1942. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  1943. );
  1944. --75 最近接触方式 Label71 最近外呼、最近呼入、微信 Individual.LCMethod 客户最后一次接触的方式
  1945. UPDATE shanglifeecif.Individual si1 SET si1.Label71 = (
  1946. SELECT '最近'||CASE t.scenario WHEN '回访' THEN '外呼' WHEN '咨询' THEN '呼入' END FROM (
  1947. SELECT
  1948. row_number()OVER(PARTITION BY pl.partyid ORDER BY pl.sdate desc) rn,
  1949. pl.partyid,
  1950. pl.scenario
  1951. FROM shanglifeecif.partytimeline pl WHERE pl.partyid IS NOT NULL AND (pl.scenario = '回访' OR pl.scenario = '咨询')
  1952. ) t WHERE t.rn = 1 AND si1.scustid = t.partyid
  1953. );
  1954. --77 是否关注官微 Label73 关注官微 无 0
  1955. --UPDATE shanglifeecif.Individual si1 SET si1.Label73 = '关注官微'
  1956. --WHERE si1.idcard IN (SELECT a.certificate_no FROM account a)
  1957. --OR si1.passport IN (SELECT a.certificate_no FROM account a)
  1958. --OR si1.Dlicense IN (SELECT a.certificate_no FROM account a)
  1959. --OR si1.othernumber IN (SELECT a.certificate_no FROM account a);
  1960. --78 是否注册官微 Label74 注册官微 无 0
  1961. UPDATE shanglifeecif.Individual si1 SET si1.Label74 = '注册官微'
  1962. WHERE si1.idcard IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  1963. OR si1.passport IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  1964. OR si1.Dlicense IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0)
  1965. OR si1.othernumber IN (SELECT a.certificate_no FROM dsj.account a WHERE a.account_status = 0);
  1966. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '丈夫生日临近' WHERE si1.scustid IN (
  1967. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  1968. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  1969. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '丈夫'
  1970. );
  1971. UPDATE shanglifeecif.Individual si1 SET si1.label76 = '妻子生日临近' WHERE si1.scustid IN (
  1972. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  1973. WHERE sis.rstype = '配偶' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  1974. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '妻子'
  1975. );
  1976. -- 本人生日提醒 Label77 本人生日临近 客户生日-当前日期<5
  1977. --UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))<=5 AND
  1978. --DATEDIFF(to_char(SYSDATE,"2022-MM-dd"),to_char(si1.birthday,"2022-MM-dd"))>0;
  1979. --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;
  1980. UPDATE shanglifeecif.Individual si1 SET si1.label77 = '本人生日临近' WHERE si1.scustid IN (
  1981. SELECT scustid FROM (
  1982. SELECT * FROM (
  1983. 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
  1984. , day(to_date(birthday)) userday from shanglifeecif.Individual
  1985. )
  1986. WHERE
  1987. (nowmonth != nextmonth AND
  1988. (
  1989. (nowmonth== usermonth AND userday> nowday )
  1990. or (nextmonth == usermonth AND userday <= nextday )
  1991. )
  1992. )
  1993. OR (nowmonth == nextmonth AND nowmonth == usermonth AND userday > nowday AND userday <=nextday )
  1994. )
  1995. );
  1996. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '父亲生日临近' WHERE si1.scustid IN (
  1997. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  1998. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  1999. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '父亲'
  2000. );
  2001. UPDATE shanglifeecif.Individual si1 SET si1.label78 = '母亲生日临近' WHERE si1.scustid IN (
  2002. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2003. WHERE sis.rstype = '父母' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2004. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '母亲'
  2005. );
  2006. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '儿子生日临近' WHERE si1.scustid IN (
  2007. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2008. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2009. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '儿子'
  2010. );
  2011. UPDATE shanglifeecif.Individual si1 SET si1.label79 = '女儿生日临近' WHERE si1.scustid IN (
  2012. SELECT sis.indid1 FROM shanglifeecif.indrelationship sis LEFT JOIN shanglifeecif.individual si ON sis.indid2 = si.scustid
  2013. WHERE sis.rstype = '子女' AND DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))<=5 AND
  2014. DATEDIFF(to_char(si.birthday,"2022-MM-dd"),to_char(SYSDATE,"2022-MM-dd"))>0 AND sis.role2 = '女儿'
  2015. );
  2016. --69 近期咨询过产品 label80 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含产品咨询)或服务记录中包含保单基本信息、投保咨询 近期咨询产品
  2017. UPDATE shanglifeecif.Individual si1 SET si1.Label80 = '近期咨询过产品' WHERE si1.scustid IN (
  2018. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2019. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE (rm.reasonsecondname LIKE '%保单基本信息%' OR rm.reasonsecondname LIKE '%投保咨询%')
  2020. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7 )
  2021. );
  2022. --70 近期咨询过理赔 label81 7天内呼入咨询过,呼叫中心服务记录、咨询转办单提取关键字段(包含理赔咨询)或服务记录、咨询转办单中包含理赔字段 近期咨询理赔
  2023. UPDATE shanglifeecif.Individual si1 SET si1.Label81 = '近期咨询过理赔' WHERE si1.scustid IN (
  2024. SELECT dp.customerno FROM dsj.policy_information dp WHERE dp.contno IN (
  2025. SELECT rm.contnos FROM dsj.cc_record_main rm WHERE rm.reasonsecondname LIKE '%理赔%'
  2026. and rm.contnos IS not NULL AND DATEDIFF(SYSDATE,rm.starttime) < 7)
  2027. );
  2028. --75 续期临期未缴费 label88 续期缴费期到宽限期未交费,续期缴费日期-当前日期<5 续期临期未缴费
  2029. UPDATE shanglifeecif.Individual si1 SET si1.Label88 = '续期临期未缴费' WHERE si1.scustid IN (
  2030. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2031. 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
  2032. );
  2033. --76 续期到期未缴费 label89 过了续期宽限期,仍未缴费 续期到期未缴费
  2034. UPDATE shanglifeecif.Individual si1 SET si1.Label89 = '续期到期未缴费' WHERE si1.scustid IN (
  2035. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效'AND p.payintv = '期缴' AND p.payendyear<>p.paycount AND
  2036. to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S') > DATE_ADD(p.paytodate, 60)
  2037. );
  2038. --93 失效客户 Label91 失效客户 所有保单都是失效状态 客户名下所有保单均失效的客户
  2039. UPDATE shanglifeecif.Individual si1 SET si1.Label91 = '失效客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2040. SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2041. SELECT p.customerno,count(*) AS pnum FROM dsj.policy_information p WHERE p.appflag <> '有效' GROUP BY p.customerno
  2042. ) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2043. GROUP BY pi.customerno
  2044. ) temp WHERE temp.tnum = temp.pnum);
  2045. --失效原因
  2046. UPDATE shanglifeecif.Individual si1 SET si1.label92 = (
  2047. SELECT '有'||t.terminatestate||'保单' FROM (
  2048. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2049. WHERE p.appflag = '中止'
  2050. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2051. );
  2052. -- 终止客户 label93 客户的所有保单缴费期满且承保期限已满正常终止的客户 终止客户
  2053. --UPDATE shanglifeecif.Individual si1 SET si1.Label93 = '终止客户' WHERE si1.scustid IN (SELECT temp.customerno FROM (
  2054. --SELECT count(*) AS tnum,max(t.customerno) AS customerno,max(t.pnum) AS pnum FROM (
  2055. --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
  2056. --) t LEFT JOIN dsj.policy_information pi ON pi.customerno = t.customerno
  2057. --GROUP BY pi.customerno
  2058. --) temp WHERE temp.tnum = temp.pnum);
  2059. --终止原因
  2060. UPDATE shanglifeecif.Individual si1 SET si1.Label94 = (
  2061. SELECT '有'||t.terminatestate||'保单' FROM (
  2062. SELECT row_number()over(partition by p.customerno order by p.polapplydate desc) rn,p.customerno,p.terminatestate FROM dsj.policy_information p
  2063. WHERE p.appflag = '终止'
  2064. ) t WHERE t.rn = 1 AND si1.scustid = t.customerno
  2065. );
  2066. --81 上年续期交费情况 label95 相对于上一年的交费日期和实收日期,提前X天交费、滞后X天交费、宽限期外交费、失效客户 提前X天交费、滞后X天交费、宽限期外交费
  2067. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2068. --SELECT
  2069. --CASE
  2070. -- WHEN temp.dnum<0 THEN '上一年提前'||abs(temp.dnum)||'天交费'
  2071. -- WHEN temp.dnum>0 THEN '上一年滞后'||temp.dnum||'天交费'
  2072. -- WHEN temp.toconfdate > temp.kxdate THEN '上一年宽限期外交费'
  2073. --END
  2074. -- FROM (
  2075. -- 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 (
  2076. -- SELECT row_number()OVER(PARTITION BY ln.contno ORDER BY ln.paydate DESC) rd,ln.* FROM dsj.ljapayperson ln
  2077. -- WHERE ln.confdate IS NOT NULL AND ln.paydate IS NOT null
  2078. -- ) t LEFT JOIN (
  2079. -- SELECT row_number()OVER(PARTITION BY ln2.contno ORDER BY ln2.paydate DESC) rd,ln2.* FROM dsj.ljapayperson ln2
  2080. -- WHERE ln2.confdate IS NOT NULL AND ln2.paydate IS NOT null AND ln2.paycount > 1
  2081. -- ) tt ON t.contno = tt.contno AND t.rd = tt.rd - 1 WHERE t.rd = 1 AND tt.rd = 2
  2082. -- ) temp WHERE temp.dnum <> 0 AND temp.rn = 1 AND si1.scustid = temp.appntno
  2083. --) WHERE 1 = 1;
  2084. --UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2085. -- SELECT
  2086. -- CASE
  2087. -- WHEN t.dnum<0 THEN '提前'||abs(t.dnum)||'天交费'
  2088. -- WHEN t.dnum>0 AND t.dnum<=60 THEN '滞后'||t.dnum||'天交费'
  2089. -- WHEN t.dnum>60 THEN '宽限期外交费'
  2090. -- END
  2091. -- FROM (
  2092. -- 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
  2093. -- WHERE p.appflag = '有效' AND p.payintv = '期缴'
  2094. -- ) t WHERE t.dnum <> 0 AND t.rn = 1 AND si1.scustid = t.customerno
  2095. --) WHERE 1 = 1;
  2096. UPDATE shanglifeecif.Individual si1 SET si1.Label95 = (
  2097. SELECT
  2098. CASE
  2099. WHEN t.dnum=0 THEN '上一年如期缴费'
  2100. WHEN t.dnum<0 THEN '上一年提前'||abs(t.dnum)||'天交费'
  2101. WHEN t.dnum>0 AND t.dnum<=60 THEN '上一年滞后'||t.dnum||'天交费'
  2102. WHEN t.dnum>60 THEN '上一年宽限期外交费'
  2103. END
  2104. FROM (
  2105. SELECT
  2106. 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
  2107. FROM dsj.ljapayperson l WHERE l.paycount > 1 AND YEAR(l.confdate) = YEAR(sysdate) - 1
  2108. ) t WHERE t.rn = 1 AND t.appntno = si1.scustid
  2109. ) WHERE 1 = 1;
  2110. --98 大龄 Label96 大龄 来电客户年龄50岁以上
  2111. UPDATE shanglifeecif.Individual si1 SET si1.Label96 = '大龄' where si1.scustid IN (
  2112. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2113. SELECT contnos from dsj.cc_record_main
  2114. )
  2115. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=50 AND TRUNC(months_between(sysdate, si1.birthday)/12)<60;
  2116. --99 高龄 Label97 高龄 来电客户年龄60岁以上
  2117. UPDATE shanglifeecif.Individual si1 SET si1.Label97 = '高龄' where si1.scustid IN (
  2118. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2119. SELECT contnos from dsj.cc_record_main
  2120. )
  2121. ) AND TRUNC(months_between(sysdate, si1.birthday)/12)>=60;
  2122. --100 敏感职业 Label100 敏感职业 投保人职业为记者、律师、公务员、媒体、金融行业
  2123. 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;
  2124. --102 公司销售人员 Label100 公司销售人员 姓名与保单经办人一致 客户为公司销售人员
  2125. --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
  2126. --where m.contnos='2019082000110188'" 平均通话时长超过10分钟
  2127. UPDATE shanglifeecif.Individual si1 SET si1.Label101 = (
  2128. SELECT '长通话' FROM (
  2129. SELECT
  2130. t.contnos,
  2131. row_number()OVER(PARTITION BY p.customerno) rn,
  2132. p.customerno
  2133. FROM (
  2134. SELECT (sum(lo.call_length)/count(*)) AS avgcalltime,m.contnos from dsj.cc_record_main m
  2135. LEFT JOIN dsj.ucc_rms_recorderlog lo ON m.call_id = lo.call_id
  2136. WHERE m.contnos IS NOT NULL AND lo.call_length IS NOT NULL
  2137. GROUP BY m.contnos
  2138. ) t LEFT JOIN dsj.policy_information p ON t.contnos = p.contno
  2139. WHERE t.avgcalltime>600
  2140. ) temp WHERE temp.customerno IS NOT NULL AND temp.rn = 1 AND si1.scustid = temp.customerno
  2141. );
  2142. --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%'" 每次来电均下转办单的
  2143. UPDATE shanglifeecif.Individual si1 SET si1.Label103 = '要求较多' WHERE si1.scustid IN (
  2144. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2145. SELECT temp.policyno FROM (
  2146. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2147. 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
  2148. UNION
  2149. SELECT f.policyno,'' AS mnum,count(*) AS fnum FROM dsj.cc_swfflowmain f WHERE f.modelno = 1 GROUP BY f.policyno
  2150. )t GROUP BY t.policyno
  2151. ) temp WHERE (temp.fnum/temp.mnum)>0.7
  2152. )
  2153. );
  2154. --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%'" 咨询转办单项目为投诉
  2155. UPDATE shanglifeecif.Individual si1 SET si1.Label104 = '易投诉升级' WHERE si1.scustid IN (
  2156. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2157. SELECT temp.policyno FROM (
  2158. SELECT t.policyno,max(t.mnum) mnum,max(t.fnum) fnum FROM (
  2159. 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
  2160. UNION
  2161. 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
  2162. )t GROUP BY t.policyno
  2163. ) temp WHERE temp.mnum = temp.fnum
  2164. )
  2165. );
  2166. --107 高频投诉 Label105 高频投诉 "select count(1) from cc_action_data_complaints c where c.productno='2018110400035608'" --半年之内来过两次以上投诉的,投诉受理日期间隔<180天,且投诉次数>2
  2167. --UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in
  2168. --(SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN
  2169. --(SELECT temp.productno FROM (
  2170. --SELECT t.productno,t.sinserttime,
  2171. --(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
  2172. --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
  2173. -- FROM
  2174. --(
  2175. -- select cd.productno,row_number()OVER(PARTITION BY cd.productno ORDER BY cd.inserttime) rn,cd.inserttime AS sinserttime
  2176. -- from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd WHERE cd.complaintsid=c.complaintsid AND cd.productno IS NOT NULL
  2177. --) t
  2178. --) temp WHERE temp.esinserttime IS NOT NULL AND DATEDIFF(temp.esinserttime,temp.sinserttime) < 180));
  2179. UPDATE shanglifeecif.Individual si1 SET si1.Label105 = '高频投诉' WHERE si1.scustid in (
  2180. SELECT t.customerno FROM (
  2181. SELECT
  2182. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2183. t1.customerno,
  2184. t1.contno,
  2185. ca.inserttime FROM (
  2186. SELECT
  2187. max(p.customerno) customerno,
  2188. p.contno
  2189. FROM dsj.policy_information p GROUP BY p.contno
  2190. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2191. ) t LEFT JOIN (
  2192. SELECT
  2193. row_number()OVER(PARTITION BY t1.customerno ORDER BY ca.inserttime) rownum,
  2194. t1.customerno,
  2195. t1.contno,
  2196. ca.inserttime FROM (
  2197. SELECT
  2198. max(p.customerno) customerno,
  2199. p.contno
  2200. FROM dsj.policy_information p GROUP BY p.contno
  2201. ) t1 LEFT JOIN dsj.cc_action_complaints ca ON t1.contno = ca.productnos
  2202. ) tt ON t.customerno = tt.customerno AND t.rownum = tt.rownum+1
  2203. WHERE DATEDIFF(tt.inserttime,t.inserttime) < 180
  2204. );
  2205. --SELECT c.productno,c.inserttime FROM cc_action_data_complaints c WHERE c.productno IS NOT NULL GROUP BY c.productno
  2206. --108 重大投诉影响 Label106 重大投诉影响 投诉来源 投诉来源是保监局、保监会、媒体转办的
  2207. UPDATE shanglifeecif.Individual si1 SET si1.Label106 = (
  2208. SELECT
  2209. CASE
  2210. WHEN tt.complaintsSource LIKE '%保监会%' THEN '重大投诉'
  2211. WHEN tt.complaintsSource LIKE '%保监局%' THEN '重大投诉'
  2212. WHEN tt.complaintsSource LIKE '%媒体转办%' THEN '重大投诉' END FROM (
  2213. SELECT pi.customerno,max(complaintsSource) AS complaintsSource FROM (
  2214. select group_concat((case c.complaintsSource
  2215. when '911' then '来电'
  2216. when '912' then '来访'
  2217. when '913' then '来函'
  2218. when '914' then '保监会转办'
  2219. when '919' then '保监局转办'
  2220. when '915' then '媒体转办'
  2221. when '916' then '同业公会'
  2222. when '917' then '其他转办'
  2223. when '918' then '呼出'
  2224. else c.complaintsSource END),',') as complaintsSource,p.contno from dsj.cc_action_complaints c,dsj.cc_action_data_complaints cd,dsj.policy_information p
  2225. where cd.complaintsid=c.complaintsid AND p.contno = cd.productno GROUP BY p.contno
  2226. ) t LEFT JOIN dsj.policy_information pi ON t.contno = pi.contno GROUP BY pi.customerno
  2227. ) tt WHERE tt.customerno = si1.scustid
  2228. );
  2229. --109 高金额 Label107 高金额 关于高金额的指标,鉴于大数据无法计算件均保费,调整逻辑如下:
  2230. --根据业绩归属渠道、缴费方式、以及期缴保费划分如下
  2231. --02个险渠道 期缴 大于20000以上
  2232. --03银保渠道 期缴 大于50000以上
  2233. --06健康险 期缴 大于 20000以上
  2234. UPDATE shanglifeecif.Individual si1 SET si1.Label107 = '高金额'
  2235. WHERE si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE
  2236. p.appflag = '有效' AND p.payintv = '期缴' and
  2237. ((p.salecom = '03' AND p.prem>50000) OR (p.salecom = '02' AND p.prem>20000) OR (p.salecom = '06' AND p.prem>20000)));
  2238. --最近理赔结案 label108 最近15天做过理赔,当前日期-理赔结案日期<15天 最近理赔结案
  2239. UPDATE shanglifeecif.Individual si1 SET si1.Label108 = '最近理赔结案' WHERE si1.scustid IN (
  2240. SELECT c.insuredno FROM dsj.INSURANCE_CLAIM c WHERE DATEDIFF(to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss.S'),c.endcasedate) < 15
  2241. );
  2242. --111 理赔报案追踪 Label109 理赔报案追踪 理赔状态为报案状态,且理赔报案日-当前日期<30天
  2243. 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) );
  2244. --112 理赔处理中 Label110 理赔处理中 理赔状态为受理或立案
  2245. UPDATE shanglifeecif.Individual si1 SET si1.label110 = '理赔处理中' WHERE si1.scustid IN (
  2246. 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 = '立案')
  2247. );
  2248. --最近保全完成 label111 最近15天做过保全,来电日期-保全申请日期<15天 最近保全完成
  2249. UPDATE shanglifeecif.Individual si1 SET si1.Label111 = '最近保全完成' WHERE si1.scustid IN (
  2250. SELECT p.customerno FROM dsj.policy_information p WHERE p.contno IN (
  2251. 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'
  2252. )
  2253. );
  2254. --115 生存金未领 Label113 生存金未领 判断逻辑不详 生存金领取方式为自动转账、存在生存金且未领取
  2255. UPDATE shanglifeecif.Individual si1 SET si1.label113 = '生存金未领' WHERE si1.scustid IN (
  2256. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2257. SELECT contno FROM dsj.Lcinsureacc WHERE acctype = '005' and insuaccbala>0
  2258. )
  2259. );
  2260. --117 红利垫缴还款 Label115 红利垫缴还款 判断逻辑不详 存在红利,且红利已经垫交保单还款
  2261. UPDATE shanglifeecif.Individual si1 SET si1.label115 = '红利垫缴还款' WHERE si1.scustid IN (
  2262. SELECT p.customerno FROM dsj.policy_information p WHERE p.appflag = '有效' and p.contno IN (
  2263. SELECT a.contno FROM dsj.LOLOANDETAIL a,dsj.LDCode1 b WHERE
  2264. b.codetype='lnmoneytype' AND b.code=a.finfeetype and b.code1=a.moneytype
  2265. AND ((a.finfeetype = 'HL' AND a.moneytype = 'SX') OR (a.finfeetype = 'SC' AND a.moneytype = 'HK'))
  2266. )
  2267. );
  2268. -- 宽限期 label117 宽限日末日-当前日期<3天 宽限期
  2269. UPDATE shanglifeecif.Individual si1 SET si1.label117 = '宽限期' WHERE si1.scustid IN (
  2270. SELECT p.customerno FROM dsj.policy_information p WHERE p.payintv= '期缴' AND p.appflag='有效' AND p.payendyear!=p.paycount and
  2271. 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
  2272. );
  2273. --122 重点银行 Label120 重点银行 判断逻辑不详 保单的销售渠道网点为招商银行
  2274. UPDATE shanglifeecif.Individual si1 SET si1.Label120 = '重点银行' WHERE
  2275. si1.scustid IN (SELECT p.customerno FROM dsj.policy_information p WHERE p.AGENTCOM LIKE '%招商银行%');
  2276. dbms_output.put_line('updateindividuallable函数跑批完成!');
  2277. EXCEPTION
  2278. WHEN HIVE_EXCEPTION THEN
  2279. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2280. WHEN Others THEN
  2281. INSERT INTO shanglifeecif.exception_log(log_id,log_code,log_msg,log_time) VALUES (to_char(sysdate(),'yyyyMMddHHmmss'),sqlcode(),sqlerrm(),sysdate());
  2282. END;