2013-08-31 215 views
0

我的查询返回每个用户标识的最新条目,但我需要它返回每个用户标识和任务名称的最新条目。我试图用group by,但是我得到一个错误。有什么我做错了吗?谢谢!SQL Server查询

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 

回答

1

此时应更换PARTITION BY用户IDPARTITION BY用户ID,任务名称

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 
0

没有有一些数据,以测试和表格结构,我只能假设你真的想实现什么,但它可能是一些看起来像这样的:

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