Benny,
This might be a little more efficient than other
solutions, but it's not as simple:
select top 1 exchangerate
from (
select exchangerate, pref
from (
select top 1 exchangerate, 1 as pref
from (
select top 3 rdate, exchangerate
from ExchangeRates E1
where E1.rdate >= (
select max(rdate) as lastBefore
from ExchangeRates E2
where E2.rdate < @dt
)
order by rdate
) X
order by case when rdate < @dt then @dt - rdate else rdate - @dt end
) X1
union all
select exchangerate, pref
from (
select top 1 exchangerate, 2 pref
from ExchangeRates
order by rdate
) Y
) T
order by pref
-- Steve Kass
-- Drew University
-- Ref: 250CBB08-57AE-45C7-97F2-AF26AFC368ED
Benny Chow wrote:[color=blue]
> Hello,
>
> I need help in writing a SQL statement in MS SQL Server 2000 to select
> the latest date (i.e., the date closest to or equal to the current date)
> for a given date.
>
> For example, in a table I have the following records:
> Date Exchange-Rate
> 01/Sep/03 0.55
> 05/Sep/03 0.59
>
> If the given date is 02/Sep/03, then the rate 0.55 should be return.
> If the given date is 03/Sep/03, then the rate 0.55 should be return.
> If the given date is 04/Sep/03, then the rate 0.59 should be return.
>
> Thanks in advanced,
>
> Benny
>
> *** Sent via Developersdex
http://www.developersdex.com ***
> Don't just participate in USENET...get rewarded for it![/color]