21 lines
1.2 KiB
SQL
21 lines
1.2 KiB
SQL
CREATE OR REPLACE VIEW public.vw_fx_by_maturity_sum AS
|
|
SELECT period,
|
|
max(maturity_date) AS max,
|
|
max(amount_remaining_contract) AS rem_ct,
|
|
COALESCE(max(amount_remaining_forex), (0)::numeric) AS rem_fx,
|
|
(COALESCE(max(amount_remaining_contract), (0)::double precision) - COALESCE((max(amount_remaining_forex))::double precision, (0)::double precision)) AS req_fx
|
|
FROM ( SELECT vw_fx_by_maturity_by_contract.maturity_month AS period,
|
|
max(vw_fx_by_maturity_by_contract.maturity_date) AS maturity_date,
|
|
sum(vw_fx_by_maturity_by_contract.amount_remaining) AS amount_remaining_contract,
|
|
NULL::numeric AS amount_remaining_forex
|
|
FROM vw_fx_by_maturity_by_contract
|
|
GROUP BY vw_fx_by_maturity_by_contract.maturity_month
|
|
UNION ALL
|
|
SELECT vw_fx_by_maturity_by_forex.maturity_period AS period,
|
|
max(vw_fx_by_maturity_by_forex.maturity_date) AS maturity_date,
|
|
NULL::double precision AS amount_remaining_contract,
|
|
sum(vw_fx_by_maturity_by_forex.amount_remaining) AS amount_remaining_forex
|
|
FROM vw_fx_by_maturity_by_forex
|
|
GROUP BY vw_fx_by_maturity_by_forex.maturity_period) m
|
|
GROUP BY period;;
|