diff options
Diffstat (limited to 'sql')
| -rw-r--r-- | sql/dawn.sql | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql index cc4fda41..0c55e863 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -1922,6 +1922,21 @@ AND fund=p_fund; END; $$ LANGUAGE plpgsql; +CREATE OR REPLACE FUNCTION list_ir_swap_positions(p_date date, p_fund fund) + RETURNS TABLE(date date, effective_date date, maturity_date date, fixed_rate double precision, fund fund, folder strategy, cash_account text, float_index cash_rate, currency currency, clearing_facility clearing_cp, roll_day roll_day, notional double precision, ids integer[]) + LANGUAGE plpgsql +AS $function$ +BEGIN + RETURN QUERY SELECT p_date, i.effective_date, i.maturity_date, i.fixed_rate, i.fund, i.folder, i.cash_account, i.float_index, i.currency, i.clearing_facility, i.roll_day, + sum(CASE WHEN payreceive THEN i.notional ELSE -i.notional end) AS notional, array_agg(i.id) + FROM irs i + WHERE i.fund = $2 AND i.trade_date <= $1 + GROUP BY i.effective_date, i.maturity_date, i.fixed_rate, i.fund, i.folder, i.cash_account, i.float_index, i.currency, i.clearing_facility, i.roll_day + HAVING sum(CASE WHEN payreceive THEN i.notional ELSE -i.notional end) != 0; +END; +$function$ +; + CREATE VIEW ir_swap_risk_master AS SELECT isr.date, irs.effective_date, |
