Загрузка данных
SELECT
e.name AS schema_name,
SUM(CASE WHEN s.name = 'Базовая (БОЛ)' THEN t.value ELSE 0 END) AS bazovaya_bol,
SUM(CASE WHEN s.name = 'Базовая (БУД)' THEN t.value ELSE 0 END) AS bazovaya_bud,
SUM(CASE WHEN s.name = 'Базовая (ДБ)' THEN t.value ELSE 0 END) AS bazovaya_db,
SUM(CASE WHEN s.name = 'Базовая 2024 (БОЛ)' THEN t.value ELSE 0 END) AS bazovaya_2024_bol,
SUM(CASE WHEN s.name = 'Базовая 2024 (БУД)' THEN t.value ELSE 0 END) AS bazovaya_2024_bud,
SUM(CASE WHEN s.name = 'Базовая 2024 (ДБ)' THEN t.value ELSE 0 END) AS bazovaya_2024_db,
SUM(CASE WHEN s.name = 'Базовая 2024 (ОПФ)' THEN t.value ELSE 0 END) AS bazovaya_2024_opf,
SUM(CASE WHEN s.name = 'Базовая 2024 (ПЕР)' THEN t.value ELSE 0 END) AS bazovaya_2024_per,
SUM(CASE WHEN s.name = 'Базовая ПДС (БОЛ)' THEN t.value ELSE 0 END) AS bazovaya_pds_bol,
SUM(CASE WHEN s.name = 'Базовая ПДС (БУД)' THEN t.value ELSE 0 END) AS bazovaya_pds_bud,
SUM(CASE WHEN s.name = 'Базовая ПДС (ДБ)' THEN t.value ELSE 0 END) AS bazovaya_pds_db,
SUM(CASE WHEN s.name = 'Базовая ПДС (ОПФ)' THEN t.value ELSE 0 END) AS bazovaya_pds_opf,
SUM(CASE WHEN s.name = 'Базовая ПДС (ПЕР)' THEN t.value ELSE 0 END) AS bazovaya_pds_per,
SUM(CASE WHEN s.name = 'Базовая ПДС (ТС)' THEN t.value ELSE 0 END) AS bazovaya_pds_ts,
SUM(CASE WHEN s.name = 'Базовая ПДС (ФЕД)' THEN t.value ELSE 0 END) AS bazovaya_pds_fed,
SUM(CASE WHEN s.name = 'Базовый (ОПФ)' THEN t.value ELSE 0 END) AS bazovyy_opf,
SUM(CASE WHEN s.name = 'Базовый (ПЕР)' THEN t.value ELSE 0 END) AS bazovyy_per,
SUM(CASE WHEN s.name = 'Гарант_2027_ПДС (БУД)' THEN t.value ELSE 0 END) AS garant_2027_pds_bud,
SUM(CASE WHEN s.name = 'Гарант_2027_ПДС (ДБ)' THEN t.value ELSE 0 END) AS garant_2027_pds_db,
SUM(CASE WHEN s.name = 'Консервативная (Будущее)' THEN t.value ELSE 0 END) AS konservativnaya,
SUM(CASE WHEN s.name = 'Общий (старое НПО)' THEN t.value ELSE 0 END) AS obshiy_npo,
SUM(CASE WHEN s.name = 'С гарантированной доходностью' THEN t.value ELSE 0 END) AS guaranteed,
SUM(CASE WHEN s.name = 'Сбалансированная' THEN t.value ELSE 0 END) AS sbalansirovannaya,
SUM(CASE WHEN s.name = 'Сбалансированная_2024' THEN t.value ELSE 0 END) AS sbalansirovannaya_2024,
SUM(t.value) AS total
FROM back_office.eps_transaction et
JOIN back_office.eps_transaction_source ets
ON ets.id = et.eps_transaction_source_id
JOIN ourpension.eps e
ON e.id = et.eps_id
JOIN back_office.transaction t
ON t.operation_id = ets.operation_id
JOIN back_office.incoming_order io
ON io.id = ets.incoming_order_id
JOIN ourpension.invest_strategy_history ish
ON ish.contract_id = io.contract_id
AND t.period_date BETWEEN ish.begin_date
AND COALESCE(ish.end_date, 'infinity'::timestamp)
JOIN prod_line.hb_invest_strategy s
ON s.id = ish.strategy_id
WHERE
(#date_from# IS NULL OR t.period_date >= TO_DATE(#date_from#, 'DD.MM.YYYY'))
AND (#date_to# IS NULL OR t.period_date <= TO_DATE(#date_to#, 'DD.MM.YYYY'))
AND (#schema_index# IS NULL OR e.code = #schema_index#)
AND (#strategy# IS NULL OR s.id = #strategy#::bigint)
GROUP BY e.name
UNION ALL
SELECT
'Итого:',
SUM(CASE WHEN s.name = 'Базовая (БОЛ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая (БУД)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая (ДБ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая 2024 (БОЛ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая 2024 (БУД)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая 2024 (ДБ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая 2024 (ОПФ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая 2024 (ПЕР)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (БОЛ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (БУД)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (ДБ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (ОПФ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (ПЕР)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (ТС)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовая ПДС (ФЕД)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовый (ОПФ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Базовый (ПЕР)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Гарант_2027_ПДС (БУД)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Гарант_2027_ПДС (ДБ)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Консервативная (Будущее)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Общий (старое НПО)' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'С гарантированной доходностью' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Сбалансированная' THEN t.value ELSE 0 END),
SUM(CASE WHEN s.name = 'Сбалансированная_2024' THEN t.value ELSE 0 END),
SUM(t.value)
FROM back_office.eps_transaction et
JOIN back_office.eps_transaction_source ets
ON ets.id = et.eps_transaction_source_id
JOIN ourpension.eps e
ON e.id = et.eps_id
JOIN back_office.transaction t
ON t.operation_id = ets.operation_id
JOIN back_office.incoming_order io
ON io.id = ets.incoming_order_id
JOIN ourpension.invest_strategy_history ish
ON ish.contract_id = io.contract_id
AND t.period_date BETWEEN ish.begin_date
AND COALESCE(ish.end_date, 'infinity'::timestamp)
JOIN prod_line.hb_invest_strategy s
ON s.id = ish.strategy_id
WHERE
(#date_from# IS NULL OR t.period_date >= TO_DATE(#date_from#, 'DD.MM.YYYY'))
AND (#date_to# IS NULL OR t.period_date <= TO_DATE(#date_to#, 'DD.MM.YYYY'))
AND (#schema_index# IS NULL OR e.code = #schema_index#)
AND (#strategy# IS NULL OR s.id = #strategy#::bigint)