NEW is a keyword in Oracle , use something else as identifier. Also correct the ON syntax , a JOIN can have only one ON clause
update (
select d.t0100 as oldVal ,
t.t2400 as newVaL
from report.non_dst_readings d
inner join report.dst_readings t
on d.cust = t.cust
WHERE to_date(d.readdate_ndst, 'dd-mm-yyyy')
= (to_date(t.readdate, 'dd-mm-yyyy') -1)
)
set oldVal = newVaL;