select a.*
from access_status a
where
t.last_updated_date = (
select max(a1.last_updated_date)
from access_status a1
where a1.initial_id = a.initial_id
)
and a.access = 'ACTIVE'
SELECT ast1.*
FROM Access_Status ast1
LEFT JOIN Access_Status ast2 ON
ast1.Initial_ID = ast2.Initial_ID AND ast1.Last_Updated_Date < ast2.Last_Updated_date
WHERE ast2.Initial_ID IS NULL
AND ast1.Access = 'ACTIVE'
-- if the intent is to have latest rows that are NOT 'SUSPENDED'
-- AND ast1.Access <> 'SUSPENDED'
;
5条答案
按热度按时间flmtquvp1#
您可以按每行筛选最新的行
name
并确保状态为“活动”:为了提高性能,您需要一个索引
(intial_id, last_updated_date)
. 添加access
作为最后一列,索引可能也会有所帮助。h7appiyu2#
最新的行列表
"ACTIVE"
:ukxgm1gy3#
获取活跃用户的方法之一:
7xllpg7q4#
谢谢你的努力。事实上,我意识到我没有提供足够的信息。有一个额外的列“结束日期”,对于所有活动用户都为空。所以我可以使用access='active'并且结束日期为空
q1qsirdb5#
这种方法可以帮助您根据需要获取行