2015-05-13 3 views
0

Я использую базу данных DB2. У меня есть таблица, которая содержит следующие столбцы:Выберите из каждой группы последние n строк по дате в DB2

Group | Name | Date | Value 

Я хочу, чтобы выбрать 10 последних значений (упорядочены по дате) для каждой группы. Как это сделать в DB2? Большое спасибо.

UPDATE:

Вот что я сделал до сих пор:

select Group, DATE 
from MyTable 
ORDER BY Group, DATE 
FETCH FIRST 10 ROWS ONLY 

Эта команда SQL возвращают первые 10 строк результатов, и я хочу, чтобы получить 10 последних результатов для каждой группы.

+0

запрос с заказом по алфавиту, 'FETCH FIRST 10 ROWS ONLY' – amdixon

+0

@amdixon Я обновил пост – deltascience

+0

изменить' порядок by' пункта использовать нисходящий 'desc' – amdixon

ответ

3

Вы не можете сделать это с помощью простого предложения order by; Вы должны использовать функцию OLAP:

with ordered as (
    select group, 
     date, 
     row_number() over (partition by group order by date desc) as date_rank 
    from mytable 
) 
select group, date 
    from ordered 
    where date_rank <= 10 
+0

работал отлично. Благодаря ! – deltascience

Смежные вопросы