Pular para o conteúdo
#96080
Avatar de burgaburga
Participante

    Tenta assim:

    WITH t1 AS (
    SELECT MAX(RET_DATA) ultimo_dia_util_mes
    FROM
    (SELECT to_date(trunc(ZT.data_entrada))+level-1 RET_DATA
    FROM zxt_cal_rentabilidade ZT
    CONNECT BY to_date(trunc(ZT.data_entrada))+level-1 <= last_day(to_date(trunc(ZT.data_final)))
    MINUS
    SELECT trunc(FI.data)
    FROM feriados_internacionais FI
    WHERE cod_calendario = '-1316'
    )
    GROUP BY TO_CHAR(RET_DATA,'MM/YYYY')
    )
    SELECT zx.nome_cliente,
    zx.nome_do_fundo,
    co.data,
    co.valor ,
    NVL((SELECT (co.valor/x.valor) -1
    FROM cotacoes x
    WHERE TRUNC(add_months(co.data,-1),'MM') = TRUNC(x.data,'MM')
    AND co.cod_produto = x.cod_produto
    AND EXISTS (SELECT 1 FROM t1 WHERE TRUNC(x.data) = ultimo_dia_util_mes)
    ), ((co.valor/(SELECT co1.VALOR
    FROM COTACOES CO1,
    ZXT_CAL_RENTABILIDADE ZT
    WHERE co1.cod_produto = ZT.cod_produto
    AND co.cod_produto = co1.cod_produto
    AND co1.data = zt.data_entrada))-1)) "Rentabilidade"
    FROM cotacoes CO,
    zxt_cal_rentabilidade ZX
    WHERE zx.nome_cliente = (:nome)
    AND co.cod_produto = zx.cod_produto
    AND EXISTS (SELECT 1 FROM t1 WHERE TRUNC(co.data) = ultimo_dia_util_mes)
    ORDER BY zx.nome_do_fundo, co.data;

    plugins premium WordPress