Select

#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