[英]How do I solve the LEAD fucntion error in this code for SQLite?
我正在使用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;
DB瀏覽器的響應
near ".": syntax error: SELECT Day.Close, Day.Open, Day.Close - Day.Open AS Movement1, LEAD Day.
似乎您忘記了"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或更高版本 , 則沒有問題 ,但不幸的是,較早的版本不支持窗口功能。 請參閱更改列表 。
至於我的思考過程,起初我只是想簡化您的查詢,刪除所有看起來正確的東西,以找到最小的bug再現,即盡可能短的代碼仍然產生錯誤。 我盡力縮短到
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經過了良好的測試,如果這么大的功能子集根本不起作用,則最有可能的解釋是它不應該起作用 ,至少在此版本中不起作用 。 閱讀變更表證實了我的理論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.