T-SQL: renvoie la dernière valeur de chaque ID

J'ai une table ressemble

ID, name, Likes, Login_time 

select * from mytbl

entrez la description de l'image ici

Je veux filterr cette table:

 distinct ID, name like, login_time(last login time) 

entrez la description de l'image ici

J'ai essayé cette requête, mais cela n'a pas fonctionné.

 select * from (select name, likes, login_time rank() over (partition by id order by login_time desc) as rank from mytbl) t where t.rank = 1 

utiliser row_number au lieu du rang

 select * from ( select id, name, likes, login_time, ROW_NUMBER() over (partition by id order by login_time desc) as rank from mytbl )t where t.rank = 1 

Essaye ça

  ;WITH time AS ( SELECT Id, name, likes, login_time, row_number() over(PARTITION BY Id ORDER BY login_time desc) AS RowIndex ) SELECT Id, name, likes, login_time FROM time WHERE RowIndex = 1