Selecionar data mais próxima

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Pessoal, preciso montar uma query que busque a data mais próxima quando comparada a outra.

Por exemplo:

Digamos que eu tenha a tabela X e nessa tabela X um campo data.
Essa tabela possui inúmeros registros, e um código identificador.

Supondo que a data que eu queira comparar seja 01/05/2011. Como posso fazer para saber qual é o registro da tabela X que contpem a data mais próxima a essa data?

Em caso de empate, seria selecionado o registro com o código identificador mais alto.

alguém poderia me mostrar um exemplo de uma implementação assim?

Obrigado.
ishii
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 82
Registrado em: Ter, 28 Dez 2010 7:41 pm
Localização: São Paulo - SP

Olá,

Supondo a tabela tab_data com as colunas id e dt_compara com os seguintes valores:

Selecionar tudo

ID	DT_COMPARA
1	23/05/2011
2	25/05/2011
3	27/05/2011
4	28/05/2011
5	28/05/2011
6	25/06/2011
7	22/06/2011
Se utilizarmos a data a ser comparada por exemplo 01/06/2011 teremos a seguinte query:

Selecionar tudo

select id,dt_compara, abs(round(months_between(dt_compara,to_date('01-jun-2011')),2)) dias_diff from tab_data
order by 3,1 desc
As primeiras posições devem atender a sua condição...

[]s Ishii
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Certo.
É mais ou menos isso que eu queria.
Porém, eu precisava retornar apenas uma linha, contendo somente o registro mais próximo de uma data em questão.

Mas com o exemplo que você postou eu consegui adaptar para o que preciso.

Vlw.
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

É só colocar a consulta do Ishii como uma subconsulta na cláusula FROM de uma consula externa e na externa usar WHERE ROWNUM = 1.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 24 visitantes