Advertisement
Pashanze

Untitled

Aug 27th, 2024
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.38 KB | None | 0 0
  1.  SELECT tax2.*,
  2.                                                    imns_code AS recipient_imns_code,
  3.                                                    short_name AS recipient_short_name,
  4.                                                    date_registration AS recipient_date_registration
  5.                                             FROM(
  6.                                                 SELECT tax1.*,
  7.                                                         risk_group_code,
  8.                                                         total_score,
  9.                                                         DATE
  10.                                                 FROM (
  11.                                                     SELECT  BR.recipient_unp,
  12.                                                             BR.provider_unp,
  13.                                                             full_exhibited_total_val,
  14.                                                             full_signed_total_vat,
  15.                                                             exhibited_total_val,
  16.                                                             signed_total_vat,
  17.                                                             signed_total_vat_rate,
  18.                                                             kls_balance,
  19.                                                             kls_balance_per_counterparty,
  20.                                                             tax_gap_amount
  21.                                                     FROM(
  22.  
  23.                                                         -- БП 171 --можно заменять argMax на any при работе с полями из документа для всех типов, кроме ADDITIONAL (для additional замена возможна только при фильтрации по УНП)
  24. SELECT id,
  25.        argMax(provider_unp, KEY)                          AS provider_unp,
  26.        argMax(provider_is_resident, KEY)                  AS provider_is_resident,
  27.        argMax(provider_key, KEY)                          AS provider_key,
  28.        argMax(provider_name, KEY)                         AS provider_name,
  29.        argMax(provider_declaration, KEY)                  AS provider_declaration,
  30.        argMax(provider_taxes_number, KEY)                 AS provider_taxes_number,
  31.        argMax(recipient_status_code, KEY)                 AS recipient_status_code,
  32.        argMax(tuple(recipient_is_interdependence), KEY).1 AS recipient_is_interdependence,
  33.        argMax(recipient_country_code, KEY)                AS recipient_country_code,
  34.        argMax(recipient_unp, KEY)                         AS recipient_unp,
  35.        argMax(recipient_is_resident, KEY)                 AS recipient_is_resident,
  36.        argMax(recipient_key, KEY)                         AS recipient_key,
  37.        argMax(recipient_name, KEY)                        AS recipient_name,
  38.        argMax(recipient_declaration, KEY)                 AS recipient_declaration,
  39.        argMax(recipient_taxes_number, KEY)                AS recipient_taxes_number,
  40.        argMax(total_cost, KEY)                            AS total_cost,
  41.        argMax(total_vat, KEY)                             AS total_vat,
  42.        argMax(total_cost_vat, KEY)                        AS total_cost_vat,
  43.        provider_recipient_key,
  44.        argMax(pair_key, KEY)                              AS pair_key,
  45.        date_from,
  46.        argMax(external_date_load, KEY)                    AS external_date_load,
  47.        MAX(KEY)                                           AS max_key,
  48.        argMax(date_calculated, KEY)                       AS date_calculated
  49. FROM mns_prod_dev_test.distributed_usf_invoices_actual
  50. WHERE date_from_year = 2023
  51. AND date_from_month <= 9
  52. AND status_code <> 'ON_AGREEMENT'
  53. AND (status_code <> 'CANCELLED' OR date_cancelled > 1672520399)
  54. GROUP BY id, provider_status_code, provider_recipient_key, date_from
  55. HAVING                                                                     -- опциональный фильтр
  56.     provider_unp IN ('200034522') AND
  57.    --добавить фильтры для получения БП 132
  58.  ((provider_status_code IN ('SELLER', 'CONSIGNOR', 'TRUSTEE', 'TURNOVERS_ON_SALE_PAYER') AND
  59.          recipient_unp = '112')
  60.     OR (recipient_country_code NOT IN ('', '112')
  61.             AND provider_declaration <> '' OR provider_taxes_number <> '')
  62.             AND ((provider_status_code = 'SELLER' AND recipient_status_code = 'CUSTOMER')
  63.             OR (provider_status_code = 'AGENT' AND recipient_status_code = 'CONSUMER')
  64.             OR (provider_status_code = 'COMMISSIONAIRE' AND recipient_status_code = 'COMMISSIONAIRE')))
  65.                                                     ) AS BR ALL LEFT JOIN (
  66.  
  67.                                                             SELECT payer_unp,
  68.        argMax(full_exhibited_total_val, date_calculated)              AS full_exhibited_total_val,
  69.        argMax(full_signed_total_vat, date_calculated)                 AS full_signed_total_vat,
  70.        counterparty_unp,
  71.        argMax(exhibited_total_val, date_calculated)                   AS exhibited_total_val,
  72.        argMax(signed_total_vat, date_calculated)                      AS signed_total_vat,
  73.        argMax(signed_total_vat_rate, date_calculated)                 AS signed_total_vat_rate,
  74.        argMax(tuple(kls_balance), date_calculated).1                  AS kls_balance,
  75.        argMax(tuple(kls_balance_per_counterparty), date_calculated).1 AS kls_balance_per_counterparty,
  76.        argMax(tax_gap_amount, date_calculated)                        AS tax_gap_amount
  77. FROM mns_prod_dev_test.distributed_tax_gaps
  78. WHERE YEAR = 2023
  79.   AND last_month = 9
  80.               AND counterparty_unp IN ('200034522')
  81. GROUP BY payer_unp, counterparty_unp
  82. HAVING argMax(sign, date_calculated) = 1
  83.                                                         ) AS tax ON BR.provider_unp = tax.payer_unp
  84.                                                 ) tax1   ALL LEFT JOIN  (
  85.  
  86.                                                                         -- GetRiskGroups
  87. SELECT  unp,
  88.                 argMax(tuple(risk_group_code), date_calculated).1 AS risk_group_code,
  89.                 argMax(tuple(total_score), date_calculated).1 AS total_score,
  90.                 argMax(tuple(DATE), date_calculated).1 AS DATE
  91. FROM (
  92.         SELECT  unp,
  93.                         risk_group_code,
  94.                         total_score,
  95.                         dictGetInt64('finished_risk_calculation_history_prod_dev_test', 'date', tuple(calculation_code)) AS DATE,
  96.                         date_calculated
  97.         FROM mns_prod_dev_test.distributed_risk_groups AS risk_group
  98.  
  99.                         prewhere YEAR * 12 + MONTH IN (24265, 24266, 24267, 24268, 24269, 24270, 24271, 24272, 24273, 24274, 24275, 24276)
  100.  
  101.  
  102.                         -- UnpCodes filter
  103.         AND toString(unp) IN ('200034522')
  104. --
  105.  
  106.  
  107.         WHERE dictGetUInt8('finished_risk_calculation_history_prod_dev_test', 'is_finished', tuple(calculation_code)) --обязательный фильтр
  108.  
  109.  
  110.                 AND DATE BETWEEN 1640984400 AND 1672520399
  111.  
  112.  
  113. )
  114. GROUP BY unp
  115.  
  116. --
  117.                                                                 ) AS risk_groups ON tax1.recipient_unp = risk_groups.unp
  118.                                             ) tax2  ALL LEFT JOIN (
  119.  
  120.                                                                 -- GetGRPPayers with Typology1 filters
  121. SELECT  unp,
  122.         argMax(tuple(imns_code), date_load).1         AS imns_code,
  123.         argMax(tuple(short_name), date_load).1        AS short_name,
  124.         argMax(tuple(address), date_load).1           AS address,
  125.         argMax(tuple(date_registration), date_load).1 AS date_registration,
  126.         argMax(tuple(state_code), date_load).1        AS state_code,
  127.         argMax(tuple(date_begin_state), date_load).1  AS date_begin_state,
  128.         argMax(tuple(address_code), date_load).1      AS address_code,
  129.         argMax(tuple(sign), date_load).1              AS sign
  130. FROM mns_prod_dev_test.distributed_grp_actual_payers
  131.  
  132.     -- UnpCodes filter
  133.         WHERE toString(unp) IN ('200034522')
  134. --
  135.  
  136. GROUP BY unp
  137. HAVING sign = 1 -- постоянный фильтр, без него будут грязные данные!!!
  138. -- ImnsCodes filter
  139.     -- RegistrationDate filters
  140. --
  141.  
  142. --
  143.                                                         ) AS RecipientGRP ON tax2.recipient_unp = RecipientGRP.unp;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement