Sql server SQL Server over查询

Sql server SQL Server over查询,sql-server,Sql Server,我的查询返回每个userid的最新条目,但我需要它返回每个userid和taskname的最新条目。我尝试使用“分组方式”,但出现错误。我做错什么了吗?谢谢 SELECT UserId, TaskName, First, Last, email, ValueDate, Analysis FROM (SELECT UserId, TaskName, First, Last, email, ValueDate, Analysis, ROW_NUMBER() OVER(PARTITION BY Us

我的查询返回每个userid的最新条目,但我需要它返回每个userid和taskname的最新条目。我尝试使用“分组方式”,但出现错误。我做错什么了吗?谢谢

SELECT UserId, TaskName, First, Last, email, ValueDate, Analysis
FROM (SELECT UserId, TaskName, First, Last, 
email, ValueDate, Analysis,
ROW_NUMBER() OVER(PARTITION BY UserID
ORDER BY ValueDate DESC) AS rk
FROM MyTable) AS L
WHERE rk = 1

如果没有一些要测试的数据和表结构,我只能假设您真正想要实现什么,但它可能是这样的:

SELECT UserId, TaskName, First, Last, email, max(ValueDate), Analysis
FROM MyTable
GROUP BY UserId, TaskName, First, Last, email, Analysis
ORDER BY MAX(ValueDate) DESC

您应该将按用户ID划分的分区替换为按用户ID划分的分区,TaskName:

SELECT UserId, TaskName, First, Last, email, ValueDate, Analysis
FROM (SELECT UserId, TaskName, First, Last, 
email, ValueDate, Analysis,
ROW_NUMBER() OVER(PARTITION BY UserID, TaskName
ORDER BY ValueDate DESC) AS rk
FROM MyTable) AS L
WHERE rk = 1