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