簡體   English   中英

如何解決此代碼中SQLite的LEAD功能錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM