boa tarde,
aguem sabe como posso selecionar a maior data de uma mês anterior ?
obg
Selecionar maior data mês anterior
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
brother..
explica melhor sua necessidade..
você pode dar um max() e limitar o seu "mês anterior" no where
explica melhor sua necessidade..
você pode dar um max() e limitar o seu "mês anterior" no where
-
- Rank: Programador Pleno
- Mensagens: 40
- Registrado em: Seg, 30 Ago 2010 9:47 am
- Localização: Jundiai
o que acontece é o seguinte
tenho esse select:
na segunda linha estou selecionando a data da minha cotação - 1 mês, só que quando eu faço isso essa data pode cair em sabado domingo ou feriado e não tenho essa data, então ele me retorna um valor null,
preciso então subtrair um mês e selecionar a maior data dele automaticamente ele já vai me gerar o ultimo dia ultil...
pelo menos to pensando assim ...
tenho esse select:
select zx.nome_cliente, zx.nome_do_fundo, co.data
,(select max(x.data) from cotacoes x where x.data = add_months(co.data,-1) AND co.cod_produto = x.cod_produto )"DATA_mês_ANTEIOR"
from cotacoes CO, zxt_cal_rentabilidade ZX
where zx.nome_cliente = (:nome) and co.cod_produto = zx.cod_produto and
co.data in (select max(RET_DATA) from
(select to_date(ZT.data_entrada)+level-1 RET_DATA
from zxt_cal_rentabilidade ZT
connect by
to_date(ZT.data_entrada)+level-1
<= last_day(to_date(ZT.data_final))
MINUS
select FI.data from feriados_internacionais FI
where cod_calendario = '-1316'
)
GROUP by
to_char(RET_DATA,'MM/YYYY')
)
order by co.data
preciso então subtrair um mês e selecionar a maior data dele automaticamente ele já vai me gerar o ultimo dia ultil...
pelo menos to pensando assim ...
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
na minha limitada visão..
do jeito que ta ai você verifica atraves do dia da semana se não é sabado nem domingo.. se for você reduz 1 ou 2 dias.. agora feriado so tendo uma tabela "calendario" para você conseguir saber se é um dia util ou não
do jeito que ta ai você verifica atraves do dia da semana se não é sabado nem domingo.. se for você reduz 1 ou 2 dias.. agora feriado so tendo uma tabela "calendario" para você conseguir saber se é um dia util ou não
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Seguindo a tua lógica, acho que algo assim atende a tua necessidade, mas é como o Victor falou:
Segue o código..feriado so tendo uma tabela "calendario" para você conseguir saber se é um dia util ou não
SELECT zx.nome_cliente
,zx.nome_do_fundo
,co.data
,(SELECT MAX(x.data)
FROM cotacoes x
WHERE x.data = ADD_MONTHS(co.data, -1)
AND co.cod_produto = x.cod_produto
AND TO_CHAR(x.data, 'd') NOT IN (1, 7)) "DATA_mês_ANTEIOR"
FROM cotacoes co
,zxt_cal_rentabilidade zx
WHERE zx.nome_cliente = (:nome)
AND co.cod_produto = zx.cod_produto
AND co.data IN (SELECT MAX(ret_data)
FROM (SELECT TO_DATE(zt.data_entrada) + LEVEL - 1 ret_data
FROM zxt_cal_rentabilidade zt
CONNECT BY TO_DATE(zt.data_entrada) + LEVEL - 1 <= LAST_DAY(TO_DATE(zt.data_final))
MINUS
SELECT fi.data
FROM feriados_internacionais fi
WHERE cod_calendario = '-1316')
GROUP BY TO_CHAR(ret_data, 'MM/YYYY'))
ORDER BY co.data
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 1 visitante