Как решить ошибку функции LEAD в этом коде для SQLite? - PullRequest
0 голосов
/ 01 ноября 2018

Я использую SQLite и пытаюсь использовать функцию Lead, но я продолжаю получать сообщение об ошибке (вставлено ниже) из моего браузера БД. Кто-нибудь знает в чем проблема? А также, не могли бы вы рассказать мне о том, как вы будете отлаживать ошибку ниже? Большое спасибо заранее

МОЙ КОД

SELECT Day.Close, Day.Open, Day.Close - Day.Open AS Movement1, LEAD Day.Close OVER (ORDER BY Day.High) AS Movement2 FROM ES_SourceNT_Day_ADX14 AS Day;

ОТВЕТ ОТ БРАУЗЕРА БД

near ".": syntax error: SELECT Day.Close, Day.Open, Day.Close - Day.Open AS Movement1, LEAD Day.

1 Ответ

0 голосов
/ 01 ноября 2018

Похоже, что вы забыли закрывающие кавычки в конце "N/A, и вы можете явно указать имя таблицы (или даже указать псевдоним таблицы для начала) излишне, если у вас только одна таблица, поэтому ваш запрос можно записать как

SELECT Close, Open, Close - Open AS Movement1, LEAD (Close, 1, "N/A") OVER (ORDER BY High) AS Movement2 FROM ES_SourceNT_Day_ADX14;

Но это не проблема. На самом деле у вас нет проблем, если вы используете SQLite версии 3.25.0 или новее , но, к сожалению, в более ранних версиях не было поддержки оконных функций. См. список изменений .

Что касается моего мыслительного процесса, сначала я просто попытался упростить ваш запрос, удалив все, что казалось правильным, чтобы найти минимальное повторение ошибок, максимально короткий код, который все еще вызывает ошибку. Я пошел так далеко, чтобы сократить его до

SELECT lead(High) OVER (ORDER BY High) FROM ES_SourceNT_Day_ADX14;

тогда

SELECT row_number() OVER (ORDER BY High) FROM ES_SourceNT_Day_ADX14;

Все еще не работал, и я не знал почему, но я начинал подозревать. Я посмотрел официальную документацию и попытался запустить самый простой пример, но безрезультатно. Вот когда я понял это. SQLite отлично проверен, если такой огромный набор функций вообще не работает, наиболее вероятное объяснение состоит в том, что не должен работать , по крайней мере, в этой версии. Чтение списка изменений подтвердило мою теорию.

...