将LAG函数与SQLITE一起使用时出现未知错误

41zrol4v  于 2022-11-14  发布在  SQLite
关注(0)|答案(2)|浏览(145)

我有一张table。当我在Num维度中缺少一个值时,我想用前一行的值来替换它。下面是我尝试过的一个例子。我正在使用滞后窗口功能,但不起作用。

CREATE TABLE test(dt text, num INT);
INSERT INTO test VALUES("2011-11-11", 3);
INSERT INTO test VALUES("2011-11-12", NULL);
INSERT INTO test VALUES("2011-11-13", 5);
INSERT INTO test VALUES("2011-11-14", NULL);
INSERT INTO test VALUES("2011-11-15", NULL);
INSERT INTO test VALUES("2011-11-16", 2);

select dt,
       case when num is not null then num 
       else lag(num,1,0) over (order by dt) end 
from test

我收到的错误是:OperationalError: near "(": syntax error,我甚至不确定它是什么意思。任何帮助都将不胜感激。

lf5gs5x2

lf5gs5x21#

SQLite 3.25.0版本(2018-09-15)首次增加了对窗口函数的支持。您需要升级您的SQLite二进制文件,或者不使用窗口函数。请参阅https://www.sqlite.org/windowfunctions.html#history

1hdlvixo

1hdlvixo2#

SQLite中的窗口函数仅在版本3.25.0中引入。作为一种解决办法,您可以使用相关子查询:

select dt,
    COALESCE(
        num,
        (SELECT num FROM test t2 WHERE t2.dt < t1.dt ORDER BY t2.dt DESC LIMIT 1)
    ) AS num_lag
FROM test t1;

相关问题