T-SQL:返回每个ID的最新值

时间:2017-03-31 05:11:41

标签: sql sql-server tsql date distinct

我的表格看起来像

ID, name, Likes, Login_time

select * from mytbl

enter image description here

我想过滤此表:

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

enter image description here

我尝试了这个查询,但它没有用。

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

2 个答案:

答案 0 :(得分:1)

使用row_number而不是rank

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

答案 1 :(得分:0)

试试这个

 ;WITH temps 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 temps 
WHERE RowIndex = 1