2012-02-26 54 views
1

我有一个表,包含任务列表:如何选择组中具有最大值的行?

ID  TaskName  Date 
---------------------------------- 
1  Task1   2010-11-23 
2  Task2   2011-12-01 
3  Task1   2012-02-01 
4  Task3   2008-01-09 
5  Task2   2007-03-09 
6  Task3   2000-01-01 

如何创建一个视图包含任务,其最新的执行日期?

e.g从上表中的结果应该是:

id taskname date 
------------------------ 
3 Task1  2012-02-01 
2 Task2  2011-12-01 
4 Task3  2008-01-09 

回答

2
SELECT 
    ID, 
    TaskName, 
    Date 
FROM 
(
    select 
    ID, 
    ROW_NUMBER() OVER (PARTITION BY TaskName ORDER BY Date DESC) Ordinal, 
    TaskName, 
    Date 
    FROM YourTable 
) t 
WHERE Ordinal = 1 
0
SELECT id, taskName, MAX(Date) 
FROM table 
GROUP BY taskName 

(这不会在甲骨文工作,因为ID是不是在GROUP BY)

相关问题