...and if you have SQL 2005 then you can use a CTE (untested code)...
;with recordCTE (id, record_date, record_value, row_num)
as
(
select id,
record_date,
record_value, row_number() over (partition by id order by record_date)
from mytable
)
select id, record_date, record_value
from
(
select...