Pular para o conteúdo

Fóruns SQL e PL/SQL Select Select

#96059
batofao
Participante

    boa noite,

    sim essa data_entrada é a data inicial de quando um fundo começou ou de quando um cliente o adquiriu, só o primeiro valor é null, pq até agora eu trato apenas os últimos dias ulteis do mes, só para você entender um pouco mais faço uma espécie de automação de relatório, então esses dados são exportados para um excel onde uma pivot table ira tratar os mesmos, então mesmo que eu tenha mais registros na zxt_calc_rentabilidade depois de exportados os mesmos serão tratados….

    na zxt_cal_rentabilidade eu tenho uma data_entrada e uma data_final onde é nesse periodo que eu vou fazer o calculo dos valores;

    não entendi muito bem seu select que você enviou, que entendi tenho que faze isso:

    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 ,
    (SELECT (co.valor/NVL (x.valor, (SELECT VALOR FROM COTACOES CO, ZXT_CAL_RENTABILIDADE ZT
    WHERE co.cod_produto = ZT.cod_produto AND co.data = zt.data_entrada ))) – 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 )
    )"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;

    porem o primeiro valor ainda é null