Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.92 KB | None | 0 0
  1. WITH persons_filtered AS (
  2. select r.id_person, r.id_exactor, max(r.date_exactor) as date_exactor from cl_recovery r
  3. inner join cl_ref_employees re on r.id_exactor = re.id_exactor
  4. where r.date_exactor between to_date(concat('2018-01-27', ' 00-00-00'), 'YYYY-MM-DD HH24-MI-SS') and to_date(concat('2018-02-02', ' 23-59-59'), 'YYYY-MM-DD HH24-MI-SS')
  5. group by r.id_person, r.id_exactor
  6. ),
  7. recovery_filtered as (
  8. SELECT r.*,
  9. case when (act_method_code='K21' and claim_at_met_start is not null)
  10. then least(claim_at_met_start, coalesce(sum_paid, 0))
  11. else coalesce(sum_paid, 0)
  12. end as claim_sum_paid
  13. FROM (
  14. select id_person, id_exactor, id_credit, evid_srv, date_exactor,
  15. act_method_code, sum_paid as sum_paid, actual_debt, claim_at_met_start, is_redistr,
  16. ROW_NUMBER() OVER (PARTITION BY id_person, id_exactor, id_credit ORDER BY id_package DESC) rnk
  17. FROM cl_recovery r
  18. ) r
  19. where r.date_exactor between to_date(concat('2018-01-27', ' 00-00-00'), 'YYYY-MM-DD HH24-MI-SS') and to_date(concat('2018-02-02', ' 23-59-59'), 'YYYY-MM-DD HH24-MI-SS')
  20. )
  21.  
  22. SELECT
  23. case when to_char(trunc(pf.date_exactor),'d') = 1
  24. then CONCAT(trunc(pf.date_exactor), CONCAT( ' - ', trunc(pf.date_exactor) + 6))
  25. else CONCAT(trunc(pf.date_exactor, 'iw')-1, CONCAT( ' - ', trunc(pf.date_exactor, 'iw') + 5))
  26. end as registry, -- Реестр строкой
  27.  
  28. case when to_char(trunc(pf.date_exactor),'d') = 1
  29. then trunc(pf.date_exactor)
  30. else trunc(pf.date_exactor, 'iw')-1
  31. end as registry_start, -- Дата начала реестра
  32.  
  33. case when to_char(trunc(pf.date_exactor),'d') = 1
  34. then trunc(pf.date_exactor) +6
  35. else trunc(pf.date_exactor, 'iw')+5
  36. end as registry_end, -- Дата начала реестра
  37.  
  38. regexp_replace(
  39. (case when a.tax_code is not null then a.tax_code || ', ' else '' end) ||
  40. (case when a.region is not null then a.region || ', ' else '' end) ||
  41. (case when a.district is not null then a.district || ', ' else '' end) ||
  42. (case when a.locality_type is not null then a.locality_type || ' ' else '' end) ||
  43. (case when a.town is not null then a.town || ', ' else '' end) ||
  44. (case when a.street_type is not null then a.street_type || ' ' else '' end) ||
  45. (case when a.street is not null then a.street || ', ' else '' end) ||
  46. (case when a.street_num is not null then 'д. ' || a.street_num || ', ' else '' end) ||
  47. (case when a.block_num is not null then 'корп. ' || a.block_num || ', ' else '' end) ||
  48. (case when a.building_num is not null then 'стр. ' || a.building_num || ', ' else '' end) ||
  49. (case when a.apprt_num is not null then 'кв. ' || a.apprt_num || ', ' else '' end)
  50. , ', $', '') as address,
  51.  
  52. ad.name AS direction, -- Дирекция
  53. ar.name AS rc, -- РЦ
  54. rct.name AS collection_type, -- Тип сотрудника
  55. rcm.name AS collection_method, -- Метод взыскания
  56. ex_fio, -- ФИО сотрудника
  57. pd.pers_fio, -- ФИО заемщика
  58. dp.name AS priority,
  59. CONCAT(rf.id_exactor, CONCAT('_',rf.id_person)) as row_id,
  60. COALESCE(va.visits_number, 0) AS visit_number, -- Кол-во визитов
  61. va.last_visit_date, --дата последнего выезда
  62. COALESCE(ca.calls_number, 0) AS call_number, -- Кол-во звонков
  63. CASE WHEN COALESCE(pa.active_number, 0)>0 THEN 1 ELSE 0 END AS active_promises, --Наличие активных обещаний у Заемщика (да/нет)
  64. pl.plan_date, --Дата посещения в плане
  65. rf.claim_at_met_start as actual_debt,
  66. rf.claim_sum_paid as sum_payin
  67. FROM persons_filtered pf
  68. LEFT JOIN cl_person_data pd ON pd.id_person = pf.id_person
  69. LEFT JOIN cl_dic_priority dp ON dp.code=pd.priority
  70. left join cl_dic_address_type dat on dat.code='2'
  71. left join cl_visiting_address a on a.id_person=pf.id_person and a.is_active = 1 and a.type_id = dat.id
  72.  
  73. LEFT JOIN (
  74. SELECT va1.id_exactor, va1.id_person,
  75. SUM(va1.visits_number) AS visits_number,
  76. MAX(va1.visit_date) AS last_visit_date
  77. FROM cl_visiting_analytics va1
  78. INNER JOIN persons_filtered pf1 ON pf1.id_person=va1.id_person AND pf1.id_exactor=va1.id_exactor AND pf1.date_exactor<=va1.visit_date
  79. GROUP BY va1.id_exactor, va1.id_person
  80. ) va ON va.id_exactor=pf.id_exactor AND va.id_person=pf.id_person AND va.visits_number>0
  81. LEFT JOIN (
  82. SELECT va1.id_exactor, va1.id_person,
  83. SUM(va1.calls_number) AS calls_number
  84. FROM cl_visiting_analytics va1
  85. INNER JOIN persons_filtered pf1 ON pf1.id_person=va1.id_person AND pf1.id_exactor=va1.id_exactor AND pf1.date_exactor<=va1.visit_date
  86. GROUP BY va1.id_exactor, va1.id_person
  87. ) ca ON ca.id_exactor=pf.id_exactor AND ca.id_person=pf.id_person AND ca.calls_number>0
  88. LEFT JOIN (
  89. SELECT pa1.id_exactor, pa1.id_person,
  90. SUM(pa1.active_number) AS active_number
  91. FROM cl_promises_analytics pa1
  92. GROUP BY pa1.id_exactor, pa1.id_person
  93. ) pa ON pa.id_exactor=pf.id_exactor AND pa.id_person=pf.id_person
  94. LEFT JOIN (
  95. SELECT id_exactor, id_person, MIN(plan_date) AS plan_date
  96. FROM cl_plan_action pa
  97. WHERE status_id=(SELECT id FROM cl_dic_plan_action_status WHERE code=1) AND plan_date>sysdate
  98. GROUP BY id_exactor, id_person
  99. ) pl ON pl.id_exactor=pf.id_exactor AND pf.id_person=pl.id_person
  100. left join (
  101. select id_person, id_exactor, count(id_credit) as recovery_number, max(date_exactor) as date_exactor, sum(sum_paid) as sum_paid,
  102. sum(actual_debt) as actual_debt, sum(claim_at_met_start) as claim_at_met_start,
  103. sum(claim_sum_paid) as claim_sum_paid
  104. from recovery_filtered
  105. group by id_person, id_exactor
  106. )rf on pd.id_person = rf.id_person and pf.id_exactor = rf.id_exactor
  107. INNER JOIN cl_exactor ex ON ex.id_exactor = pf.id_exactor
  108. INNER JOIN cl_ref_employees re ON re.id_exactor = pf.id_exactor
  109. LEFT JOIN cl_acl_sid ac ON (ac.id = re.acl_sid_id)
  110. LEFT JOIN cl_acl_sid ar ON (ar.id = ac.parent_id)
  111. LEFT JOIN cl_acl_sid ad ON (ad.id = ar.parent_id)
  112. LEFT JOIN cl_ref_collection_methods rcm ON rcm.id = re.collection_method_id
  113. LEFT JOIN cl_ref_collector_type rct ON rct.id = re.collection_type_id
  114. order by pf.date_exactor, ex_fio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement