SQL - Condición para que se muestren registros por fecha

   
Vista:

Condición para que se muestren registros por fecha

Publicado por Lara (1 intervención) el 23/09/2010 18:04:31
Hola!

Tengo una tabla donde se registran las tarifas de precios de los artículos indicando a partir de la fecha en la que entra en vigor por el campo "ValidFrom". Quiere hacer una vista donde se muestren las últimos precios vigentes a una fecha en concreto. Ejemplo

ItemCode Price ValidFrom
Articulo 1 100,00 € 2010-04-01
Articulo 1 120,00 2010-06-01

SI hago la vista a fecha de hoy, solo me debería mostrar el último registro, que por fechas invalida al primero.

No como tengo que indicar en el where para que solo me muestre dicho registro.......

Muchas gracias por vuestra ayuda!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Condición para que se muestren registros por fe

Publicado por Leonardo Josué (877 intervenciones) el 23/09/2010 21:04:04
Buenos días Lara:

Espero haber entendido bien qué es lo que necesitas. Creo que te faltó poner un poco más de datos, y la redacción de tu texto tampoco es muy claro, pero a ver si entendí.

Supongamos que tengo los siguientes datos:

ItemCode|Price|ValidFrom
Articulo 1|100,00|2010-09-01
Articulo 1|110,00|2010-09-23
Articulo 1|120,00|2010-09-25
Articulo 1|130,00|2010-09-30

El formato de fecha sería yyyy-mm-dd

Si consultas la tabla el día 01, entonces el precio vigente sería el del
01. Si la consulta la realizas entre los días 02 y 23 el precio debería ser el de el día 23, si la consulta la realizas entre los días 24 y 25 el precio sería el del día 25 y si consultas entre el 26 y 30 el precio sería el del día 30 correcto???

No mencionas qué manejador de Base de Datos estás utilizando así es que te voy a colocar el ejemplo de cómo sería en SQL Server, lo único que deberías cuidar sería el WHERE para especificar la fecha de consulta.

DECLARE @Fecha datetime
SET @Fecha = '20100926'
SELECT T1.*
FROM TuTabla T1
INNER JOIN (
SELECT T2.ItemCode, MIN(T2.ValidFrom) ValidFROM
FROM TuTabla T2
WHERE T2.ValidFrom >= @Fecha
GROUP BY T2.ItemCode
) T2 ON T1.ItemCode = T2.ItemCode AND T1.ValidFrom = T2.ValidFrom

Saludos y espero tus comentarios.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar