• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Vlavros

Ajuda com Query: retornar valor mais próximo

3 mensagens neste tópico

Olá a todos.

Estou utilizando o banco de dados firebird e estou com dificuldades para fazer a seguinte query:

Tem uma tabela chamada T0501_INDICES, nela um coluna chamada A0501_TAXAMENSAL nesta coluna há diversos números do tipo FLOAT como por exemplo:

A0501_ID | A0501_TAXAMENSAL

      1      |          1.03

      2      |          1.50

      3      |          2.35

      4      |          2.40

      5      |          3.60

Baseado em um valor X que o usuario digitar a query teria que retornar o valor mais próximo tanto para mais como para menos, supondo que ele digite 2.37 a query retornaria a linha do número 2.35 (ID 3). Caso digitasse 1.40 retornaria 1.50 (ID 2)

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Firebird nunca trabalhei n conheço.

Mas deixo uma sugestão em Sql Server:


Declare @x float;
set @x = 1.5;

select top 1 ID, Taxa, min(abs(Taxa-@x)) as diferenca
from TFloat
group by ID, Taxa
order by 3

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agradeço sua ajuda, porém o firebird não tem ABS e pelo que me parece não permite subtração/adição  :)

Eu bolei uma query que faz quase o que eu quero o restante eu manipulo com o php.

SELECT
      A0501_ID,
      A0501_TAXAMENSAL
FROM
    T0501_INDICES
WHERE
     (SELECT
         MAX(A0501_TAXAMENSAL)
     FROM
         T0501_INDICES
     WHERE
         A0501_TAXAMENSAL < ?) = A0501_TAXAMENSAL

     OR

     (SELECT
         MIN(A0501_TAXAMENSAL)
     FROM
         T0501_INDICES
     WHERE
         A0501_TAXAMENSAL > ?) = A0501_TAXAMENSAL

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora