2013-11-13 9 views
0

В Microsoft Access 2007, у меня есть таблица со следующими столбцами:запрос, чтобы выбрать запись с наибольшим значением

col1 mmonth yyear  col4 
a1 5  2013  Pete 
a1 4  2013  John 
a1 3  2013  Don 
a2 7  2013  Elsa 
a2 8  2012  Rick 
a3 9  2009  Betty 
a3 10  2001  Vera 
a3 8  2013  Ronald 

С запросом, я хочу, чтобы достичь записи с наибольшим числом в mmonth и yyear как следующим образом:

col1 mmonth yyear  col4 
a1 5  2013  Pete 
a2 7  2013  Elsa 
a3 8  2013  Ronald 
+0

Я попытался применить этот код на столе, но в таблице получены значения ошибок в yyear колонке – user2964296

ответ

0

Вы можете использовать функцию RANK():

SELECT * 
FROM (SELECT *, RANK() OVER (ORDER BY yyear DESC, mmonth DESC) AS rk 
     FROM some_table) t 
WHERE t.rk <= <number of records you want> 
+0

, что вы имеете в виду <число записей, которые вы хотите> вы можете дать мне значение, как описано выше, например, если вы – user2964296

+0

хотите пять лучших записей, замените их на 5. Если вы хотите получить первую семью, замените ее на 7 и т. д. – Mureinik

0

this should do it

with cte as (

select col4,col1,max(month) as mm,max(year) as yy,RANK() over(order by year desc,month desc) as rn from table 
group by col1,year,month,col4 

) 

select col1,yy,mm,col4 from cte where rn <4 
+0

дает вам три лучших результата! –

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