Jump to content

Ajuda com Query: retornar valor mais próximo


Vlavros

Recommended Posts

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.

Link to comment
Share on other 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

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other 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
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.