根据每个用户的MAX(Date)获取ID

时间:2018-07-31 19:35:02

标签: sql sql-server sql-server-2012 greatest-n-per-group

我正在尝试查询上次阅读的报告及其阅读日期。

UserReport

c(brv_trx1$decvar[-1],NA) instead of the lag(brv_trx1$decvar)

因此要获得特定用户,我可以执行以下查询:

UserId, ReportId, DateRead
1,      2,        2018-01-01
1,      1,        2015-02-12
2,      3,        2016-03-11
3,      2,        2017-04-10
1,      3,        2016-01-01
2,      1,        2018-02-02

但是我很难弄清楚如何为每个用户执行此操作。让我失望的是TOP 1

预期结果:

SELECT TOP 1 *
FROM UserReport
WHERE UserId = 1
ORDER BY DateRead DESC

1 个答案:

答案 0 :(得分:0)

您可以使用:

SELECT TOP 1 WITH TIES *
FROM UserReport
ORDER BY ROW_NUMBER() OVER(PARTITION BY UserId ORDER BY DateRead DESC)