繁体   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