Cita:
Iniciado por flaviovich leonardo_josue, me parece que estas tomando mal las fechas.
En tu ejemplo, no puedes tomar la fecha 23 si @Fecha = '2010-09-02', porque el 23 es una fecha posterior.
Bueno, LHG tiene la ultima palabra.
Flaviovich: Si lo que comentas es correcto entonces ambos estamos equivocados, ya que con los datos que pongo de ejemplo tu consulta siempre regresaría el precio del día 25, ya que como mencioné en mi post nunca concideras la fecha de consulta. Haciendo la corrección creo que sería más o menos así:
Código SQL:
Ver originalDECLARE @Fecha datetime
SET @Fecha = '20100923'
SELECT T1.*
FROM TuTabla T1
INNER JOIN (
SELECT ItemCode, MAX(ValidFrom) ValidFrom
FROM TuTabla
WHERE ValidFrom <= @Fecha --Para considerar la fecha de consulta
GROUP BY ItemCode
) T2 ON T1.ItemCode = T2.ItemCode AND T1.ValidFrom = T2.ValidFrom
Con esta consulta y de acuerdo a los datos que pongo de ejemplo entonces del 01 hasta el 22 pondrá el precio del 01, del 23 al 24 pondrá el precio del día 23 y del 25 en adelante pondrá la fecha del 25, pero como dices, LHG es quien tiene la última palabra.
Saludos
Leo.