SQL Server 按顺序分组

标签 sql sql-server sql-server-2008 group-by sql-order-by

我有一个表,我需要根据用户 ID 拉回 5 个最新记录并关闭文档 ID(无重复)。基本上,我正在跟踪访问过的页面并尝试拉回用户最近访问的 3 个页面。

示例数据:

╔══════════════════════════════════════════════╗
║UserID   DocumentID   CreatedDate             ║
╠══════════════════════════════════════════════╣
║  71         22       2013-09-09 12:19:37.930 ║
║  71         25       2013-09-09 12:20:37.930 ║
║  72          1       2012-11-09 12:19:37.930 ║
║  99         76       2012-10-10 12:19:37.930 ║
║  71         22       2013-09-09 12:19:37.930 ║
╚══════════════════════════════════════════════╝

如果 UserID = 71,所需的查询结果:

╔══════════════════════════════════════════════╗
║UserID    DocumentID  CreatedDate             ║
╠══════════════════════════════════════════════╣
║  71         25       2013-09-09 12:20:37.930 ║
║  71         22       2013-09-09 12:19:37.930 ║
╚══════════════════════════════════════════════╝

最佳答案

SELECT TOP 3 UserId, DocumentId, MAX(CreatedDate)
FROM MyTable
WHERE UserId = 71
GROUP BY UserId, DocumentId
ORDER BY MAX(CreatedDate) DESC

关于SQL Server 按顺序分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704039/

相关文章:

sql - Oracle SQL 条件连接

sql - 在 SQL 中对电子邮件地址列表进行哈希处理

sql-server - 如何对字符串中的数据求和

sql - 在 SQL 中审计 DISABLE/ENABLE 触发器

sql - 在 SQL 中创建 CSV 字符串

sql - 在 Access/VBA 中构建 SQL 字符串

sql - 天数不可用

sql - 如何创建硬编码日期参数以在查询中使用?

SQL 服务器 : trigger firing every time

SQL 通配符而不是 SELECT 语句中的键