Sql 查询以选择具有最高值的记录

Sql 查询以选择具有最高值的记录,sql,database,ms-access-2007,Sql,Database,Ms Access 2007,在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

在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
您可以使用秩函数:

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>
这应该可以


你的意思是什么?你能给我上面例子中的值吗?如果你想要排名前五的记录,用5条代替。如果您想要前七名,请将其替换为前七名,以此类推,以获得前三名的结果!!我尝试在表上应用此代码,但该表在yyear列中检索到错误值
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