Как выбрать строку с наибольшим значением в своей группе? - PullRequest
1 голос
/ 26 февраля 2012

У меня есть таблица, содержащая список задач:

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

как создать представление, содержащее задачу с самой последней датой выполнения?

например, результат из приведенной выше таблицы должен быть:

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

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012
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 голосов
/ 26 февраля 2012
SELECT id, taskName, MAX(Date)
FROM table
GROUP BY taskName

(Это не будет работать в Oracle, поскольку id отсутствует в GROUP BY)

...