Vlavros Posted September 17, 2009 at 06:33 PM Report #287493 Posted September 17, 2009 at 06:33 PM 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.
bruno1234 Posted September 17, 2009 at 07:25 PM Report #287500 Posted September 17, 2009 at 07:25 PM 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
Vlavros Posted September 23, 2009 at 12:26 PM Author Report #288273 Posted September 23, 2009 at 12:26 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now