› Fóruns › SQL e PL/SQL › Select › Select
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