Я нахожусь в процессе реализации кода, на который ссылается здесь , но по какой-то причине пример отлично работает на DB Fiddle, но не на моей домашней машине, выдавая ошибку;
Error: near "previous": syntax error
Вот код;
WITH cte AS
(SELECT mmsi, tstamp, sog, navstat
, lag(sog, 1) OVER previous AS prev_sog
, lag(navstat, 1) OVER previous AS prev_navstat
FROM data
WINDOW previous AS (PARTITION BY mmsi ORDER BY tstamp))
SELECT * FROM cte
WHERE sog <> prev_sog OR navstat <> prev_navstat
ORDER BY mmsi, tstamp;
При запуске это то, что происходит;
sqlite> WITH cte AS
...> (SELECT mmsi, tstamp, sog, navstat
...> , lag(sog, 1) OVER previous AS prev_sog
...> , lag(navstat, 1) OVER previous AS prev_navstat
...> FROM data
...> WINDOW previous AS (PARTITION BY mmsi ORDER BY tstamp))
...> SELECT * FROM cte
...> WHERE sog <> prev_sog OR navstat <> prev_navstat
...> ORDER BY mmsi, tstamp;
Error: near "previous": syntax error
Вот мои данные системы;
sqlite> select sqlite_version();
3.22.0
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
Я пытался много разных вариантов кода, но он всегда выдает одну и ту же ошибку. Я подумал, что это может быть связано с копированием и вставкой некоторых ненужных деталей кодирования, но даже ручное печатание приводит к той же ошибке.
Использование;
SELECT * FROM data
работает просто отлично! Не уверен, что я делаю что-то не так, любая помощь оценена, спасибо.
РЕДАКТИРОВАТЬ: несколько комментариев подняли проблему версии. К вашему сведению;
Building dependency tree
Reading state information... Done
sqlite3 is already the newest version (3.22.0-1ubuntu0.3)
Также следует отметить, что я запустил этот код на другом сервере с той же версией Ubuntu и Sqlite3, и он работает нормально.