with updatebase_cte (MachineID,RecordedDate,Pressure,ind) as (
select s.MachineID,s.RecordedDate,s.Pressure, 0 as ind
from yourtable s
where s.RecordedDate='2012-10-02'
union all
select s.MachineID,s.RecordedDate,
case when s.Pressure = 0 and sc.Pressure <> 0 then sc.Pressure else s.Pressure end as Pressure,
case when s.Pressure = 0 and sc.Pressure <> 0 then 1 else 0 end as ind
from yourtable s
inner join updatebase_cte sc
on (s.RecordedDate = dateadd(day,1,sc.RecordedDate) and s.MachineID=sc.MachineID)
)
-- this will return data need be updated part, you can use it to update by a join.
select * from updatebase_cte where ind=1
Just a quick coding, have not got time to test. Does this work?:-)