sql >> Databáze >  >> RDS >> Mysql

ERROR 1064 (42000) chyba databáze v syntaxi over partition by

Funkce okna (například lead() ) byly přidány pouze v MySQL 8.0, takže nejsou dostupné ve verzi 5.7. Můžete emulovat lead() s vlastním spojením, jako je tento:

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
    )

Poznámka:Aby tato metoda správně fungovala, potřebujete další záznamy se stejným id mít jiné timestamp s - což není případ ukázkových dat, která jste ukázali, kde jsou všechna časová razítka stejná (předpokládám, že se jedná o překlep ve vašich ukázkových datech).




  1. Potřebuje spustit jeden dotaz SQL proti dvěma Oracle DB ve skriptu shell najednou a exportovat data do samostatných souborů csv

  2. AKTUALIZUJTE TABULKU SOUČETEM

  3. ORA-00933:Příkaz SQL nebyl správně ukončen při použití pivotu

  4. Generování série dat