尝试使用 PARTITION BY 时出现 SQlite SELECT OVER(...) 语法错误

问题描述 投票:0回答:1

我在 SQLite 表中有遥测记录,其中包含三个字段:

record_name
record_time
record_value

我想从表中为每个

record_name
选择最新值。我想出了这个:

SELECT 
record_name, record_value
OVER (
  PARTITION BY record_name ORDER BY record_time RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
) AS group_concat
FROM CoverageRun  ORDER BY record_time

但我收到错误:

[SQLITE_ERROR] SQL error or missing database (near "(": syntax error)

驱动版本为3.44。应该支持这个。错误是什么?

sql sqlite
1个回答
0
投票

这是您选择最近时间的方式:

select record_name, max(record_time) as rt
from CoverageRun
group by record_name;

这将按名称对您的结果进行分组,并查找每个结果的最近时间。现在我们已经掌握了诀窍,让我们提取与组相关的值:

select CoverageRun.record_name, CoverageRun.record_time, CoverageRun.record_value
from CoverageRun
join (
    select record_name, max(record_time) as rt
    from CoverageRun
    group by record_name
) t
on CoveragRun.record_name = t.record_name and CoverageRun.record_time = t.rt;
© www.soinside.com 2019 - 2024. All rights reserved.