Instrucción SQL o Consulta que escoja los valores por fecha o fecha cercana y por producto único.

Tengo una Base de Datos de Access en la cual llevo un registro de Inventarios. Cuando se ingresan los datos en la tabla de Movimientos estos se graban mediante una Consulta en una tabla de Saldos la cual muestra los últimos saldos de los movimientos, pero también se graban en una tabla de RegistroSaldos en la cual se graban todos los registros que ha tenido la cuenta y lleva el registro de todos los saldos que han habido. Pues de aquí quiero poder hacer consultas para que me haga reportes según fecha. El problema que encuentro es que a veces la fecha de la cual necesito saque la información no ha existido movimiento y por lo tanto no muestra ninguna información, y si en el campo criteria le escribo la condicionante "<=" me muestra todos los saldos de un determinado producto cuando lo que yo quiero solo es el último saldo que se aproxime más a la fecha que yo le especifique en el formulario de fecha. Quiero que la consulta me muestre todos los productos que coincidan o sean cercanos a la fecha pero solo una vez, no todos los registros anteriores a la fecha que yo especifico en el formulario. ¿Se puede hacer esto o sera mejor hacer una consulta para que sume todos los registros que cumplan la condición? ¿En tal caso como lo harías tu? Espero explicarme bien y si no es así puedes preguntarme sobre lo que haya olvidado explicar o sobre lo que no fui claro.

2 Respuestas

Respuesta
1

Según lo que comprendo en tu pregunta es que busque por los valores de fechas el que coincida o se aproxime al que el usuario indica.

Si nos ponemos a analizar, la fecha es simplemente un número almacenado con formato como por ejemplo "dd/mm/yyyy".

Pero si detallamos el como sería más práctico, te recomendaría la sentencia BETWEEN.

SELECT * FROM tabla WHERE fecha BETWEEN fecha1 AND fecha2

Con esto puedes visualizar un rango de fechas y puedes escoger el termino que quieras.

Otro punto es que puedes utilizar la sentencia MAX o MIN según el caso que necesites que sería mas o menos así

SELECT MAX(fecha) as nombre FROM tabla

o puede ser

SELECT MIN(fecha) as nombre FROM tabla

Tambien puedes separar la fecha condicionalmente y analizar por separado el día, el mes o el año con las sentencias DAY, MONTH o YEAR.

Existen muchas formas, pero la mejor es la que más se aproxime a tu cometido.

Prueba y cualquier cosa comenta nuevamente...

Respuesta

Un select de este tipo te permite seleccionar la informacion que quieres con las condiciones que desas,

Tu primer consulta esta bien, solo dile que te lo ordene por fecha y que te de solo el el primer registro

select top 1 Fecha, otrocampo, otrocampomas  where fecha<=@date ORDER BY fecha desc select top 1 Fecha where fecha<=@date ORDER BY fecha desc

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas