Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.55 KB | None | 0 0
  1. WITH requests AS (
  2.     SELECT rf.id,
  3.            fin_requests_fd.get_first_request_id(rf.id) as parent_id
  4.     FROM fin_requests_fd.requests_fd rf
  5.     WHERE  rf.geo_tag_id = :subjectId
  6.       AND rf.deleted_at IS NULL
  7.       AND rf.decision_date BETWEEN coalesce(:dateFrom, '01.01.2014'):: DATE AND coalesce(:dateTo::DATE, CURRENT_DATE)
  8.       AND rf.decision_date IS NOT NULL
  9. ), unique_requests AS (
  10.     SELECT DISTINCT ON (parent_id) * FROM requests ORDER BY parent_id, id DESC
  11. ),requests_with_parent AS (
  12.     SELECT id, parent_id FROM unique_requests
  13.     UNION
  14.     SELECT parent_id AS id, null AS parent_id FROM unique_requests
  15.     WHERE id <> parent_id
  16. ),requests_current AS (
  17.     SELECT rf.limit_year_id AS limit_year_id,
  18.            rf.id AS Id,
  19.            rwp.parent_id AS parent_id,
  20.            rf.geo_tag_id AS geo_tag_id,
  21.            rf.registration_date AS registration_date,
  22.            rf.decision_date AS decision_date,
  23.            rf.decision_number AS decision_number,
  24.            rf.mski_decision_of_fin_date AS mski_decision_of_fin_date,
  25.            rf.mski_decision_of_fin_number AS mski_decision_of_fin_number,
  26.            rf.sphere_of_mski_id AS sphere_of_mski_id,
  27.            rf.type_of_mski_id AS type_of_mski_id,
  28.            sum(coalesce(rfm.amount_of_funds,0)) AS amount_of_funds,
  29.            sum(coalesce(rfm.amount_of_subject,0)) AS amount_of_subject,
  30.            sum(coalesce(rfm.amount_of_mo,0)) AS amount_of_mo
  31.     FROM fin_requests_fd.requests_fd rf
  32.              JOIN  requests_with_parent rwp ON rwp.ID = rf.ID
  33.              LEFT JOIN public.refs r_ly ON r_ly.ID = rf.limit_year_id
  34.              LEFT JOIN fin_requests_fd.requests_fd_mo rfm ON rf.id = rfm.request_fd_id AND rfm.deleted_at IS NULL
  35.     GROUP BY rf.id, rf.limit_year_id, rwp.parent_id, rf.geo_tag_id
  36. ),requests_mo_schedule AS (
  37.     SELECT rwp.id AS id,
  38.            coalesce(rfms.program_stage_id,0) AS program_stage_id,
  39.            rfms.request_fd_mo_id AS request_fd_mo_id,
  40.            sum(coalesce(rfms.amount_of_subject_year,0)) AS amount_of_subject_year,
  41.            sum(coalesce(rfms.amount_of_mo_year,0)) AS amount_of_mo_year,
  42.            sum(coalesce(rfms.borrowed_money_year,0)) AS borrowed_money_year,
  43.            sum(coalesce(rfms.participant_money_year,0)) AS participant_money_year,
  44.            sum(coalesce(rfms.other_money_year,0)) AS other_money_year,
  45.            sum(coalesce(rfms.amount_of_funds_year,0)) AS amount_of_funds_year,
  46.            sum(coalesce(rfms.borrowed_money_year,0) + coalesce(rfms.participant_money_year,0)
  47.                + coalesce(rfms.other_money_year,0)) AS borrowed_participant_other,
  48.            sum(coalesce(rfms.borrowed_money_year,0) + coalesce(rfms.amount_of_funds_year,0)
  49.                + coalesce(rfms.amount_of_subject_year,0) + coalesce(rfms.amount_of_mo_year,0)
  50.                + coalesce(rfms.other_money_year,0) +coalesce(rfms.participant_money_year,0)) AS expenditure_schedule
  51.     FROM requests_with_parent rwp
  52.              LEFT JOIN fin_requests_fd.requests_fd_mo rfm ON rfm.request_fd_id = rwp.id AND rfm.deleted_at IS NULL
  53.              LEFT JOIN fin_requests_fd.requests_fd_mo_schedule rfms ON rfms.request_fd_mo_id = rfm.id
  54.     GROUP BY rwp.id, rfms.program_stage_id,rfms.request_fd_mo_id
  55. ), transfer_decisions AS (
  56.     SELECT td.request_fd_id AS id,
  57.            sum(coalesce(td.sum_of_work,0)) + sum(coalesce(td.sum_on_percent,0)) FILTER ( WHERE r_ps.code = :typeTransfer) AS amount_transfer,
  58.            sum(coalesce(td.sum_of_work,0)) + sum(coalesce(td.sum_on_percent,0)) FILTER ( WHERE td.payment_type_id = :typeRefund) AS amount_return
  59.     FROM requests_with_parent rwp
  60.              LEFT JOIN fin_requests_fd.transfer_decisions td ON rwp.id = td.request_fd_id AND td.deleted_at IS NULL
  61.              LEFT JOIN refs r_ps ON r_ps.ID  = td.payment_type_id
  62.     GROUP BY td.request_fd_id
  63. ),requests_sum_limit AS (
  64.     SELECT rwp.id AS  Id, rwp.parent_id AS parent_id,
  65.            rc.limit_year_id AS limit_year_id,
  66.            sum(rcn.amount_of_funds) Column13,
  67.            sum(rms.amount_of_subject_year) AS Column14,
  68.            sum(rms.amount_of_mo_year) AS Column15,
  69.            sum(rms.borrowed_participant_other) AS Column16,
  70.            sum(rms.borrowed_money_year) AS Column17,
  71.            sum(rms.participant_money_year) AS Column18,
  72.            sum(rms.other_money_year) AS Column19,
  73.            sum(rms.expenditure_schedule) FILTER ( WHERE r_ps.code = 'stage2013') AS Column20,
  74.            sum(rms.expenditure_schedule) FILTER ( WHERE r_ps.code = 'stage2014') AS Column21,
  75.            sum(rms.expenditure_schedule) FILTER ( WHERE r_ps.code = 'stage2015') AS Column22,
  76.            sum(rms.expenditure_schedule) FILTER ( WHERE r_ps.code = 'stage2016') AS Column23,
  77.            sum(rms.expenditure_schedule) FILTER ( WHERE r_ps.code = 'stage2017') AS Column24,
  78.            sum(tr.amount_transfer) AS Column25,
  79.            sum(tr.amount_return) AS Column26,
  80.            sum(rcn.amount_of_funds) + sum(tr.amount_transfer) + sum(tr.amount_return) AS Column27,
  81.            sum(coalesce(rof.sum,0)) AS Column28,
  82.            sum(rc.amount_of_funds) - sum(rcn.amount_of_funds) AS Column29,
  83.            sum(rc.amount_of_subject) - sum(rcn.amount_of_subject) AS Column30,
  84.            sum(rc.amount_of_mo) - sum(rcn.amount_of_mo) AS Column31,
  85.            rms.request_fd_mo_id AS Column32
  86.     FROM requests_with_parent rwp
  87.              LEFT JOIN requests_with_parent rwpn ON rwpn.id =  rwp.parent_id and rwpn.parent_id IS NULL
  88.              LEFT JOIN requests_current rc ON rc.ID = rwp.id
  89.              LEFT JOIN requests_current rcn ON rcn.ID = rwpn.id
  90.              LEFT JOIN requests_mo_schedule rms ON rms.id = rwp.Id
  91.              LEFT JOIN transfer_decisions tr ON tr.id = rwp.id
  92.              LEFT JOIN fin_requests_fd.reduction_of_financing rof ON rof.request_fd_id = rwp.id AND rof.deleted_at IS NULL
  93.              LEFT JOIN refs r_ps ON r_ps.ID = rms.program_stage_id
  94.     WHERE rwp.parent_id IS NOT NULL
  95.     GROUP BY rwp.id, rwp.parent_id, rms.request_fd_mo_id, rc.limit_year_id
  96. )
  97. SELECT
  98.     1 AS total_group_field,
  99.     case when lead(rc.geo_tag_id) over (partition by rc.geo_tag_id order by rc.geo_tag_id, rsl.Id) IS NULL  then TRUE else FALSE end FlagLimit,
  100.     r_ly.name AS Column1,
  101.     fa.regioncode AS Column2,
  102.     rsl.id AS Column3,
  103.     gt.name AS Column4,
  104.     r_ly.name AS Column5,
  105.     rc.registration_date AS Column6,
  106.     rc.decision_date AS Column7,
  107.     rc.decision_number AS Column8,
  108.     rc.mski_decision_of_fin_date AS Column9,
  109.     rc.mski_decision_of_fin_number AS Column10,
  110.     rc.sphere_of_mski_id AS Column11,
  111.     rc.type_of_mski_id AS Column12,
  112.     rsl.Column13 AS Column13,
  113.     rsl.Column14 AS Column14,
  114.     rsl.Column15 AS Column15,
  115.     rsl.Column16 AS Column16,
  116.     rsl.Column13 AS Column17,
  117.     rsl.Column14 AS Column18,
  118.     rsl.Column19 AS Column19,
  119.     rsl.Column20 AS Column20,
  120.     rsl.Column21 AS Column21,
  121.     rsl.Column22 AS Column22,
  122.     rsl.Column23 AS Column23,
  123.     rsl.Column24 AS Column24,
  124.     rsl.Column25 AS Column25,
  125.     rsl.Column26 AS Column26,
  126.     rsl.Column27 AS Column27,
  127.     rsl.Column28 AS Column28,
  128.     rsl.Column29 AS Column29,
  129.     rsl.Column30 AS Column30,
  130.     rsl.Column31 AS Column31,
  131.     r_rsl.name AS Column32
  132. FROM requests_sum_limit rsl
  133.          LEFT JOIN public.refs r_ly ON r_ly.ID = rsl.limit_year_id
  134.          LEFT JOIN requests_current rc ON rc.Id = rsl.Id
  135.          LEFT JOIN public.geo_tags gt ON gt.id = rc.geo_tag_id
  136.          LEFT JOIN public.refs r_rsl ON r_rsl.ID = rsl.Column32
  137.          LEFT JOIN public.fias_addrobj fa on fa.okato =  gt.okato and fa.livestatus = '1' and fa.actstatus = '1'
  138. ORDER BY r_ly.name, fa.regioncode, rsl.id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement