我有一个表'UserLibrary'
Name Library AccessedTime
A ABC 2:00 am
B XYZ 4:00 am
C PQR 5:00 am
C PQR 12:00 pm
C PQR 2:00 pm
D LIT 4:00 pm
我想要一个不同用户列表,图书馆及其上次访问时间。
从UserLibrary中选择*,将为我提供用户'C'和库'PQR'的重复行,但我想只为用户C使用上次访问时间。
基本上我想要,
Name Library AccessedTime
A ABC 2:00 am
B XYZ 4:00 am
C PQR 2:00 pm
D LIT 4:00 pm
我如何在Sql server中执行此操作
答案 0 :(得分:1)
您可以使用ROW_NUMBER()
生成可以过滤的序号。在这种情况下,会为每个name
和library
生成序列号,并按最新的AccessedTime
进行排序。最新记录的1
上的值为rn
。
SELECT Name, Library, AccessedTime
FROM
(
SELECT Name, Library, AccessedTime,
ROW_NUMBER() OVER ( PARTITION BY Name, Library
ORDER BY AccessedTime DESC) rn
FROM UserLibrary
) a
WHERE a.rn = 1
答案 1 :(得分:1)
select Name, Library, max(AccessedTime) as 'AccessedTime'
from UserLibrary
group by Name, Library