Advertisement
Guest User

Untitled

a guest
Oct 15th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.69 KB | None | 0 0
  1. declare @d_cont date = dateadd(m,-4/*(:dt)*/,cast(getdate() as date)) --за последний месяц
  2.  
  3. ;with
  4.     c as (
  5.         select c.r_debt_id as cl_r_debt_id, c.dt as Dt_cont, c.id as cont_id, cr.[text] cont_text
  6.         from i_collect.dbo.contact_log c
  7.             left join i_collect.dbo.contact_result_set cr on cr.code = c.result
  8.         where
  9.             cr.[text] in (
  10.                 'В суд поданы документы на восстановление ИД',
  11.                 'В УСВД переданы документы на восстановление ИД',
  12.                 'Дубликат ИД',
  13.                 'Получен дубликат ИД',
  14.                 'Запрос справки об утере ИД',
  15.                 'Получено определение суда о выдаче дубликата',
  16.                 'Получен отказ в выдаче дубликата ИД',
  17.                 'Приняты документы на восстановление ИД',
  18.                 'Приняты судом документы на восстановление ИД',
  19.                 'Справка об утере ИД для получения дубликата',
  20.                 'Справка для получения дубликата'
  21.             )
  22.             and c.dt >= @d_cont
  23.     )
  24.     select * into #cont from c
  25.  
  26. select distinct
  27.     d.id ID_dolga
  28.     ,per.f+' '+per.i+' '+per.o FIO_d_ka
  29.     ,b.name Bank
  30.     ,p.name Portfel
  31.     ,isnull(us_dep.oper_fio, 'Не установлен') Operator
  32.     ,isnull(us_dep.dep_name, 'Не установлен') Podrazdelenie
  33.     ,(select name from dict dt where dt.parent_id = 6 and dt.code = d.[status]) status_dolga
  34.     ,d.debt_sum Ostatok
  35.     ,isnull(last_plat.sum_plat, 0) summa_posl_plat
  36.     ,cast(last_plat.dt_plat as date) dt_posl_plat
  37.     ,cast(cont_zapors_spravki_ob_utere_ID.Dt_cont as date) Dt_zaprosa_v_FSSP_spravki
  38.     ,cast(cont_spravka_ob_utere_ID.Dt_cont as date) Dt_polucheniya_spravki
  39.  
  40.     ,cast(cont_sposob_polucheniya.Dt_cont as date) Dt_peredachi_spravki_v_sud_USVD
  41.     ,(case
  42.         when cont_sposob_polucheniya.cont_text in (
  43.             'В суд поданы документы на восстановление ИД',
  44.             'Приняты документы на восстановление ИД',
  45.             'Приняты судом документы на восстановление ИД'
  46.         )
  47.             then 'Через суд'
  48.         when cont_sposob_polucheniya.cont_text = 'В УСВД переданы документы на восстановление ИД'
  49.             then 'Через УСВД'
  50.     end) sposob_polucheniya_docs
  51.  
  52.     ,cast(cont_poluch_opredelenie_suda.Dt_cont as date) Dt_poluch_opredeleniya_suda
  53.     ,cast(cont_poluch_otkaz_dublicat.Dt_cont as date) Dt_okonch_procesa
  54.     ,(case
  55.         when cont_poluch_otkaz_dublicat.cont_text in ('Дубликат ИД', 'Получен дубликат ИД')
  56.             then 'Получен дубликат ИД'
  57.         when cont_poluch_otkaz_dublicat.cont_text = 'Получен отказ в выдаче дубликата ИД'
  58.             then 'Получен отказ'
  59.     end) Itog
  60.    
  61. from
  62.     bank as b
  63.     inner join portfolio as p on b.id = p.parent_id
  64.     inner join debt as d on p.id = d.r_portfolio_id
  65.     --контакты из временной таблицы
  66.     inner join #cont c on c.cl_r_debt_id = d.id
  67.     inner join person per on per.id = d.parent_id
  68.     -- юзеры и их подразделения
  69.     left join (
  70.         select w.r_debt_id, u.f+' '+u.i+' '+u.o oper_fio, dep.name dep_name
  71.         from work_task w
  72.             left join users u on u.id = w.r_user_id
  73.             left join department dep on dep.dep = u.r_department_id
  74.     ) us_dep on us_dep.r_debt_id = d.id
  75.     -- последние платежи и их даты
  76.     left join (
  77.         select c.parent_id, c.sum sum_plat, c.calc_date dt_plat
  78.         from i_collect.dbo.debt_calc c
  79.         where c.id in (
  80.             select max(id)
  81.             from i_collect.dbo.debt_calc
  82.             group by parent_id
  83.         )
  84.         and (c.is_cancel = 0 or c.is_cancel is null)
  85.     ) last_plat on last_plat.parent_id = d.id
  86. --1-- последний контакт "Запрос справки об утере ИД" и "Справка для получения дубликата"
  87.     left join (
  88.         select c.cl_r_debt_id, c.Dt_cont
  89.         from #cont c
  90.         where c.cont_id in (
  91.             select max(c_2.cont_id)
  92.             from #cont c_2
  93.             where c_2.cont_text in ('Запрос справки об утере ИД', 'Справка для получения дубликата')
  94.             group by c_2.cl_r_debt_id
  95.         )
  96.     ) cont_zapors_spravki_ob_utere_ID on cont_zapors_spravki_ob_utere_ID.cl_r_debt_id = d.id
  97. --2-- контакт "Cправка об утере ИД для получения дубликата"
  98.     left join (
  99.         select c.cl_r_debt_id, c.Dt_cont
  100.         from #cont c
  101.         where c.cont_id in (
  102.             select max(c_2.cont_id)
  103.             from #cont c_2
  104.             where c_2.cont_text in ('Справка об утере ИД для получения дубликата', 'Справка для получения дубликата')
  105.             group by c_2.cl_r_debt_id
  106.         )
  107.     ) cont_spravka_ob_utere_ID on cont_spravka_ob_utere_ID.cl_r_debt_id = d.id
  108. --3/4-- последние контакты "В суд поданы документы на восстановление ИД и В УСВД переданы документы на восстановление ИД"
  109.     left join (
  110.         select c.cl_r_debt_id, c.cont_text, c.Dt_cont
  111.         from #cont c
  112.         where c.cont_id in (
  113.             select max(c1.cont_id)
  114.             from #cont c1
  115.             where c1.cont_text in (
  116.                     'В суд поданы документы на восстановление ИД',
  117.                     'В УСВД переданы документы на восстановление ИД',
  118.                     'Приняты документы на восстановление ИД',
  119.                     'Приняты судом документы на восстановление ИД'
  120.             )
  121.             group by c1.cl_r_debt_id
  122.         )
  123.     ) cont_sposob_polucheniya on cont_sposob_polucheniya.cl_r_debt_id = d.id
  124. --5-- контакт "Получено определение суда о выдаче дубликата"
  125.     left join (
  126.         select c.cl_r_debt_id, c.Dt_cont
  127.         from #cont c
  128.         where cont_text in ('Получено определение суда о выдаче дубликата')
  129.     ) cont_poluch_opredelenie_suda on cont_poluch_opredelenie_suda.cl_r_debt_id = d.id
  130.     -- контакт "Дубликат ИД", "Получен отказ в выдаче дубликата ИД"
  131.     left join (
  132.         select c.cl_r_debt_id, cont_text, c.Dt_cont
  133.         from #cont c
  134.         where c.cont_id in (
  135.             select max(c1.cont_id)
  136.             from #cont c1
  137.             where c1.cont_text in ('Дубликат ИД', 'Получен дубликат ИД', 'Получен отказ в выдаче дубликата ИД')
  138.             group by c1.cl_r_debt_id
  139.         )
  140.     ) cont_poluch_otkaz_dublicat on cont_poluch_otkaz_dublicat.cl_r_debt_id = d.id
  141.  
  142.  
  143.  
  144. where
  145.     c.Dt_cont >= @d_cont
  146.     and p.parent_id != 68
  147.  
  148. order by d.id
  149.  
  150. drop table #cont
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement