Problemas con una consulta

Ramón Lira
19 de Mayo del 2010
Hola, quiero hacer una consulta a una tabla donde tengo un campo llamado "Longitud" donde estan insertadas un gran numero de longitudes, y quiero que me arroge la longitud mas cercana a la que yo le proporsione. por ejemplo si yo le doy la longitud "95.87" y en la tabla hay longitudes: "95.45" , "95.91" , "95.99", etc. Lo correcto seria que me arrojara la "95.91".

Agradeceria la ayuda, estaba pensando hacer algun algoritmo desde código pero quiero saber si hay alguna función como MAX, MIN, etc.

Carlos Cordo
24 de Mayo del 2010
Ramon,
Tu pregunta es muy interesante y me di a la tarea de buscar una respuesta para usted.

Sin embargo en el camino me encontre con varias preguntas para usted.

Primero que tipo de base de datos estas usando?

Si es Oracle hay una funcion que se llama greatest() que la puedes usar para hacer lo que necesitas.

si es MS-SQL entonces esta este post en donde Arnei Rowland escribio una funcion que simula el funcionamiento de la funcion anterio. Esta muy bueno dale un vistaso y me avisa si ocupas ayuda.

http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/d5583d1e-df78-4552-80e9-c63cfe0eb0c3

Y si necesitas Hosting o asistencia technica visitanos en
http://www.crystaltech.com?id=000231



Carlos Co

Ramón Lira
03 de Junio del 2010
Hola Carlos,

Muchas gracias por tu respuesta, la verdad no había vuelto entrar porque entre algunas veces y no habían contestado y como en otros foros ya había preguntado eso y nada.

Bueno mira estoy usando SQL Server 2008, y eso aun no lo resuelvo, estuve mientras con otras cosas, voy a echarle un vistazo a lo que me proporcionaste veré si puedo tomar algo de ahí, sin embargo si hay algo que puedas decirme para SQL Server te lo agradecería.

Ramón Lira
03 de Junio del 2010
Ho ho,

Disculpa, confundí MS-SQL pensé que habías puesto My SQL.

Le echare un vistazo.

Luis Alberto Diaz
08 de Junio del 2010
Trata con este query que preparé:

select case when abs(menor) (
select 95.87-(select max(longi) from longitudes where longi<='95.87') menor,
95.87-(select min(longi) from longitudes where longi>='95.87') mayor
) x

Reemplazas el 95.87 por el valor que deseas encontrarle el más cercano.

Luis Alberto Diaz
08 de Junio del 2010
por alguna razon me está modificando la primera linea... seria

select case when abs(menor) < abs(mayor) then 95.87-abs(menor) else 95.87+abs(mayor) end mascerca from