Advertisement
Guest User

Untitled

a guest
Jan 15th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.44 KB | None | 0 0
  1. ;with --парсим имя портфеля
  2.     p1 as (
  3.         select
  4.             p.id p_id,
  5.             p.parent_id p_pid,
  6.             cast(p.sign_date as date) Dt_Pokupki
  7.             ,(case
  8.                 when p.name like '%soft%'
  9.                     then SUBSTRING(p.name,1,PATINDEX('%__soft%',p.name))
  10.                 when p.name like '%hard%'
  11.                     then SUBSTRING(p.name,1,PATINDEX('%__hard%',p.name))
  12.                 when p.name like '%legal%'
  13.                     then SUBSTRING(p.name,1,PATINDEX('%__legal%',p.name))
  14.                 when p.name like '%exec%'
  15.                     then SUBSTRING(p.name,1,PATINDEX('%__exec%',p.name))
  16.             end) Imya_portf_1
  17.         from portfolio p
  18.         where p.contract_typ = 2-- and p.parent_id != 49
  19.     )
  20.     select * into #p from p1
  21. -----------------------------------------------------
  22. ;with --дел всего (для дел куплено)
  23.     d as (
  24.         select d.id d_id, d.r_portfolio_id d_rporft
  25.         from debt d
  26.     )
  27.     select * into #d_kupleno from d
  28. -----------------------------------------------------
  29. ;with --дел в работе
  30.     d1 as (
  31.         select d.id d_id, d.r_portfolio_id d_rporft
  32.         from debt d
  33.         where d.[status] not in (6,7,8,10) --не в статусах
  34.     )
  35.     select * into #d_v_rabote from d1
  36. -----------------------------------------------------
  37. ;with --находим долги кому письмо отправено
  38.     d2 as (
  39.         select cl.r_debt_id d_id
  40.         from
  41.             contact_log cl
  42.         where
  43.             cl.typ = 6 --с типом письмо
  44.             and (
  45.                 cl.dsc like '%Уведомление о состоявшейся уступке права требования%' --и с таким комментарием
  46.                 or cl.dsc like '%Уведомление о переуступке права требования%' -- или с таким комментарием
  47.             )
  48.     )
  49.     select * into #pisem_otpravleno from d2
  50. -----------------------------------------------------
  51. ;with -- выбираем долги без адресов (факт/рег)
  52.     d3 as (
  53.         select d.id d_id
  54.         from
  55.             debt as d
  56.         where
  57.             not exists ( --не содержит
  58.                 select a.parent_id
  59.                 from address a --адресов
  60.                 where
  61.                     a.typ in (1,2) --с типом (рег/факт)
  62.                     and not exists ( --и не содержит
  63.                         select a.parent_id
  64.                         from address ad --адресов
  65.                         where (ad.typ in (1,2) and a.block_flag = 1) --с типом 1,2 и блокированных
  66.                             and a.parent_id = d.parent_id
  67.                     )
  68.                     and a.parent_id = d.parent_id
  69.             )
  70.             and not exists ( --и не содержит
  71.                 select po.d_id
  72.                 from #pisem_otpravleno po --дел по которым рассылка была
  73.                 where po.d_id = d.id
  74.             )
  75.     )
  76.     select * into #d_bez_adr from d3
  77. -----------------------------------------------------
  78. ;with -- долги с не нормализированными адресами (факт/рег)
  79.     d4 as (
  80.         select
  81.             d.id d_id
  82.         from
  83.             portfolio as p
  84.             inner join debt as d on p.id = d.r_portfolio_id
  85.         where
  86.             exists (
  87.                 select a.parent_id
  88.                 from  address a
  89.                 where a.typ in (1,2)
  90.                         and (a.block_flag = 0 or block_flag is null)    --не блокирован
  91.                         and (
  92.                             a.verification_dt <= p.sign_date or --нормализация ранее входа портф или
  93.                             a.verification_dt is null   --нормализация отсутств.
  94.                         )
  95.                         and a.parent_id = d.parent_id
  96.             )
  97.             and not exists ( --не содержит
  98.                 select a.parent_id
  99.                 from address a --адреса
  100.                 where a.parent_id = d.parent_id
  101.                     and a.typ in (1,2) --с типом (рег/факт)
  102.                     and (a.block_flag = 0 or block_flag is null) --и не блокирован
  103.                     and a.verification_dt >= p.sign_date --и дата норм > чем дата подписания портф
  104.             )
  105.             and not exists ( --не содержит
  106.                 select po.d_id
  107.                 from #pisem_otpravleno po --дел по которым рассылка была
  108.                 where po.d_id = d.id
  109.             )
  110.     )
  111.     select * into #d_adr_bez_norm from d4
  112. -----------------------------------------------------
  113. ;with -- долги с нормализированными адресами (рег/факт) на которые не было рассылки
  114.     d5 as (
  115.         select
  116.             d.id d_id
  117.         from
  118.             portfolio as p
  119.             inner join debt as d on p.id = d.r_portfolio_id
  120.         where
  121.             exists (
  122.                 select a.parent_id
  123.                 from address a
  124.                 where
  125.                     a.typ in (1,2) --рег/факт
  126.                     and a.verification_dt >= p.sign_date --дата  нормализ  > дата входа портф
  127.                     and (
  128.                         a.block_flag = 0 or  -- адрес не блокирован
  129.                         block_flag is null  -- адрес не блокирован
  130.                     )
  131.                     and a.parent_id = d.parent_id
  132.             )
  133.             and not exists ( --не содержит
  134.                 select po.d_id
  135.                 from #pisem_otpravleno po --дел по которым рассылка была
  136.                 where po.d_id = d.id
  137.             )
  138.     )
  139.     select * into #d_norm_adr_net_rassilki from d5
  140. -----------------------------------------------------
  141. ;with --долги по котрым рассылки писем не было
  142.     d6 as (
  143.         select d.id d_id
  144.         from
  145.             debt as d
  146.         where
  147.             not exists ( --не содержит
  148.                 select po.d_id
  149.                 from #pisem_otpravleno po --дел по которым рассылка была
  150.                 where po.d_id = d.id
  151.             )
  152.     )
  153.     select * into #d_ne_otpr from d6
  154. -----------------------------------------------------
  155. select
  156.     (select name from bank b where b.id = #p.p_pid) Bank
  157.     ,#p.Imya_portf_1 Imya_portf
  158.     ,#p.Dt_Pokupki Dt_pokupki
  159.     ,count(#d_kupleno.d_id) Del_kupleno
  160.     ,count(#d_v_rabote.d_id) Del_v_rabote
  161.     ,count(#pisem_otpravleno.d_id) Del_komy_otpravleno
  162.     ,count(#d_ne_otpr.d_id) Del_komy_ne_otpravleno
  163.     ,count(#d_bez_adr.d_id) Del_bez_adresov
  164.     ,count(#d_adr_bez_norm.d_id) Del_bez_normal_adresov
  165.     ,count(#d_norm_adr_net_rassilki.d_id) Del_s_norm_adr_bez_pisem
  166.    
  167. from
  168.     #p
  169.     inner join #d_kupleno on #d_kupleno.d_rporft = #p.p_id
  170.     left join #d_v_rabote on #d_v_rabote.d_id = #d_kupleno.d_id
  171.     left join #pisem_otpravleno on #pisem_otpravleno.d_id = #d_kupleno.d_id
  172.     left join #d_bez_adr on #d_bez_adr.d_id = #d_kupleno.d_id
  173.     left join #d_adr_bez_norm on #d_adr_bez_norm.d_id = #d_kupleno.d_id
  174.     left join #d_norm_adr_net_rassilki on #d_norm_adr_net_rassilki.d_id = #d_kupleno.d_id
  175.     left join #d_ne_otpr on #d_ne_otpr.d_id = #d_kupleno.d_id
  176.  
  177. group by
  178.     #p.Imya_portf_1, #p.p_pid, #p.Dt_Pokupki
  179.  
  180. order by #p.Imya_portf_1
  181.    
  182. drop table #p, #d_kupleno, #d_v_rabote, #pisem_otpravleno, #d_bez_adr, #d_adr_bez_norm, #d_norm_adr_net_rassilki,#d_ne_otpr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement