Advertisement
Pashanze

Untitled

Aug 27th, 2024 (edited)
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.85 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 INNER 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.         AND imns_code IN ('000', '001', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '111', '112', '200', '201', '202', '203', '204', '205', '206', '207', '208', '209', '211', '213', '214', '215', '21
  140. 6', '217', '218', '232', '233', '241', '251', '271', '291', '292', '293', '294', '295', '300', '301', '302', '303', '304', '305', '306', '307', '308', '309', '311', '312', '313', '314', '315', '316', '317', '318', '319', '321
  141. ', '322', '323', '341', '351', '362', '363', '364', '371', '381', '391', '392', '393', '394', '395', '397', '399', '400', '401', '402', '403', '404', '405', '406', '407', '408', '409', '411', '412', '413', '414', '415', '416'
  142. , '417', '418', '419', '421', '422', '423', '424', '432', '433', '434', '435', '491', '492', '493', '494', '495', '496', '497', '498', '499', '500', '501', '502', '503', '504', '505', '506', '507', '508', '509', '511', '512',
  143.  '513', '514', '515', '516', '518', '519', '542', '543', '571', '591', '592', '593', '594', '595', '596', '600', '601', '602', '603', '604', '605', '606', '607', '608', '609', '611', '612', '613', '614', '615', '616', '617',
  144. '618', '619', '621', '622', '623', '624', '625', '661', '671', '691', '692', '693', '694', '695', '696', '697', '700', '701', '702', '703', '704', '705', '707', '708', '709', '711', '712', '713', '715', '716', '717', '718', '719', '721', '722', '723', '724', '741', '751', '761', '772', '773', '774', '791', '792', '793', '794', '795', '796', '797', '800', '801', '000')
  145. --
  146.  
  147.     -- RegistrationDate filters
  148. --
  149.  
  150. --
  151.                                                         ) AS RecipientGRP ON tax2.recipient_unp = RecipientGRP.unp;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement