这是我的第一篇文章。
我有一个表格,假设(Id, UserID, Amount)
3 个字段和一些数据。下面是一个包含一些数据的示例表。 我的问题是我需要为每次这样的出场获得UserID
及其最后金额。它可以是一张表中的几个UserID
,金额随着一个增加,但有时是两个。我正在使用Sqlite
.
尝试使用LEAD()
小提琴演示
SELECT ID, UserID, AMOUNT FROM
(
SELECT ID, UserID, Amount,
CASE WHEN LEAD(UserID) OVER(ORDER BY ID) IS NULL THEN 0 ELSE LEAD(UserID) OVER(ORDER BY ID) END RN
FROM TABLE1
) X WHERE UserID <> RN OR RN = 0
这将给你正确的答案。虽然,根据我在你问题下面的评论,这不是你期望的答案。
select
a.ID,
a.UserID,
b.Amount
from
(
select
UserID,
max(ID) as ID
from
YOUR_TABLE
group by
UserID
) a
inner join YOUR_TABLE b on a.ID = b.ID and a.UserID = b.UserID
我们可以通过创建一个组 id 来实现它(changeinorder[col]( 基于用户 ID 的排序,通过检测从当前记录到以前的记录是否有变化
SELECT *,0 as changeinorder,LAG(Userid)
OVER (ORDER BY ID) AS 'Previous Record' INTO #TestB FROM #test
输出1
DECLARE @a INT
SELECT @a = 0
UPDATE #testB SET Changeinorder =@a, @a=
CASE WHEN Userid=[Previous Record]
THEN @a ELSE @a+1 END
输出2
SELECT MAX(ID),UseriD,MAX(Amount) FROM #testB GROUP BY UseriD,changeinorder
最终输出