Funkcje okna (takie jak lead() ) zostały dodane tylko w MySQL 8.0, więc nie są dostępne w wersji 5.7. Możesz emulować lead() z samodołączeniem w taki sposób:
select t.*, tlead.state, tlead.timestamp
from FinalTable t
left join FinalTable tlead
on tlead .id = t.id
and tlead.timestamp = (
select min(t1.timestamp)
from FinalTable t1
where t1.id = t.id and t1.timestamp > t.timestamp
)
Uwaga dodatkowa:aby ta metoda działała poprawnie, potrzebujesz kolejnych rekordów o tym samym id mieć inny timestamp s - co nie ma miejsca w przykładowych danych, które pokazałeś, gdzie wszystkie znaczniki czasu są takie same (zakładam, że jest to literówka w twoich przykładowych danych).