Почему мой код возвращает синтаксическую ошибку с запросом? - PullRequest
0 голосов
/ 09 апреля 2020

Я нахожусь в процессе реализации кода, на который ссылается здесь , но по какой-то причине пример отлично работает на 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, и он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...