SQL 搜索以获取具有相同用户 ID 的每个唯一单个/组条目中的最后一个值?条目可以出现在数据集中的不同位置



这是我的第一篇文章。

我有一个表格,假设(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

最终输出

相关内容

最新更新