Получение самой последней записи группы - PullRequest
2 голосов
/ 26 марта 2012

Я пытаюсь найти самую последнюю запись группы после выполнения внутреннего объединения.

Допустим, у меня есть следующие две таблицы:

dateCreated | id
2011-12-27  | 1
2011-12-15  | 2
2011-12-17  | 6
2011-12-26  | 15
2011-12-15  | 18
2011-12-07  | 22
2011-12-09  | 23
2011-12-27  | 24


  code      | id
    EFG     | 1
    ABC     | 2
    BCD     | 6
    BCD     | 15
    ABC     | 18
    BCD     | 22
    EFG     | 23
    EFG     | 24

Я хочу отобразить толькосамая последняя из группировок:

Таким образом, результат будет:

dateCreated | code
2011-12-27  | EFG
2011-12-15  | ABC
2011-12-26  | BCD

Я знаю, что это может быть достигнуто с помощью функций max и group by, но я не могукажется, получить желаемый результат.

Ответы [ 3 ]

3 голосов
/ 26 марта 2012

Я думаю, что вы должны получить это:

select max(a.dateCreated) as dateCreated
    , b.code
from table1 a
    join table2 b on a.id = b.id
group by b.code
0 голосов
/ 26 марта 2012

Для этого вы можете использовать аналитические функции.Таким образом, вы по-прежнему выбираете только один результат для каждого кода, даже если это два с одинаковым последним dateCreated (это может или не может быть тем, что вы действительно хотите в результате)

SELECT Code, dateCreated
FROM (  SELECT T2.Code, T1.dateCreated, ROW_NUMBER() OVER(PARTITION BY T2.Code ORDER BY T1.dateCreated DESC) Corr
        FROM Table1 T1
        INNER JOIN Table2 T2
        ON T1.id = T2.id) A
WHERE Corr = 1
0 голосов
/ 26 марта 2012

Предполагая, что ваши таблицы называются a и b, попробуйте это:

select max(a.dateCreated) as dateCreated, b.code
from a join b on a.id = b.id
group by b.code
...