SQLite,SELECT DISTINCT获得多个最后一行

问题描述

只是无法弄清楚此sqlite查询出了什么问题。

我有这样的ACCOUNTS表

subscr_id,txn_type,PAYMENT_START
A,signup,1
A,pay,2
A,3
A,cancel,4
B,1
B,2
B,3

我想输出A,4B,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;

当我要执行此操作时,出现错误

错误:“(”附近:语法错误

解决方法

假设没有为给定的订户重复payment_start,则可以使用相关的子查询来执行所需的操作:

select a.*
from accounta a
where a.payment_start = (select max(a2.payment_start)
                         from accounts a2
                         where a2.subscr_id = a.subscr_id
                        )