diff options
| -rw-r--r-- | sql/dawn.sql | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql index dfafbae9..750a9a98 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -1556,7 +1556,11 @@ DECLARE and_clause text; BEGIN IF strat IS NOT NULL THEN - and_clause := 'AND strat = ltrim($2::text, ''SER_'')::strategy'; + IF p_fund = 'ISOSEL' THEN + and_clause := 'AND split_part(strategy, ''/'', 2) = $2::text'; + ELSE + and_clause := 'AND strat = ltrim($2::text, ''SER_'')::strategy'; + END IF; ELSE and_clause := ''; END IF; @@ -1576,8 +1580,17 @@ JOIN (SELECT a.security_id, a.maturity, sum(endbooknav) AS globeop_nav, USING (security_id, maturity)', and_clause); -- ELSIF p_fund = 'BOWDST' THEN -- sqlquery := 'SELECT a.*, bowdst_index.admin_clean_nav, bowdst_index.admin_notional FROM list_cds_marks_pre($1, $2, $3) a LEFT JOIN bowdst_index USING (p_index, p_series, maturity) WHERE as_of_date=$1'; -ELSIF p_fund = 'BRINKER' OR p_fund = 'ISOSEL' THEN +ELSIF p_fund = 'BRINKER' THEN sqlquery := 'SELECT *, 0::double precision, 0::double precision FROM list_cds_marks_pre($1, $2, $3)'; +ELSIF p_fund = 'ISOSEL' THEN +sqlquery := format(' +SELECT l.*, b.dirty_nav, b.position FROM list_cds_marks_pre($1, $2, $3) l +LEFT JOIN index_version ON security_id=redindexcode +LEFT JOIN index_maturity USING (INDEX, series, maturity) +LEFT JOIN ( +SELECT ticker_bbg AS bbg_id, -sum(position) AS position, sum("end_mkt_value_[n]"+"bond_accrual_[n]") AS dirty_nav, +sum(bond_accrual) FROM isosel_accrued WHERE instr_type=''Credit Default Swap'' +AND ticker_bbg IS NOT NULL %s GROUP BY period_end_date, ticker_bbg HAVING period_end_date=$1 ) b USING (bbg_id)', and_clause); END IF; RETURN QUERY EXECUTE sqlquery USING p_date, strat, p_fund; END; |
