【发布时间】:2020-12-03 19:37:52
【问题描述】:
只是无法弄清楚这个 SQLite 查询出了什么问题。
我有这样的 ACCOUNTS 表
subscr_id,txn_type,PAYMENT_START
A, signup, 1
A, pay, 2
A, pay, 3
A, cancel, 4
B, signup, 1
B, pay, 2
B, pay, 3
我想输出 A,cancel,4 和 B,pay,3,(每个唯一 subscr_id 仅按时间排序的最后一个值 (PAYMENT_START))
SELECT DISTINCT subscr_id,
LAST_VALUE(txn_type) OVER (
PARTITION BY subscr_id ORDER BY PAYMENT_START asc
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS last FROM ACCOUNTS;
当我想执行这个我得到错误:
错误:“(”附近:语法错误
【问题讨论】:
-
可能你的 SQLite 版本不支持窗口函数。
-
我会检查一下,但同时还有其他方法可以为每个 subscr_id 选择最后一个值吗?
-
SQLite 首次添加窗口函数支持,发布版本为
3.25.0(2018-09-15)。 SQLite 开发人员使用 PostgreSQL 窗口函数文档作为窗口函数应该如何表现的主要参考。已经针对 PostgreSQL 运行了许多测试用例,以确保窗口函数在 SQLite 和 PostgreSQL 中以相同的方式运行。我的 sqlite3 版本是3.13.0。