在MS Access中查询表达式中获取语法错误(缺少操作员)



我得到了一个错误消息

语法错误(丢失操作员)在查询表达式'r = row_number()上方(Acell order cord by Acell desc分区)'

)'

在Microsoft Access中;我不知道为什么,但是它在Microsoft SQL Server中起作用。

我的查询:

select * 
from 
    (select *, r = row_number() over (partition by ACell order by ACell 
    desc) 
    from cellTB) a 
where 
    r <= 5;

请有人帮我吗?

示例数据:CellTB

=================
ACell  |   RNC
=================
1      |   1
-----------------
1      |   2
-----------------
1      |   3
-----------------
1      |   4 
-----------------
1      |   5
-----------------
1      |   6
-----------------
2      |   1
-----------------
2      |   2
-----------------
2      |   3
-----------------
2      |   4
-----------------
2      |   5
-----------------
2      |   6

我只想从MC访问中的重复Acell中选择前五名。

您的代码是 t-sql 。对于访问SQL ,例如,您可以使用我的 rownumber 函数,如前几次:

顺序行数

MS访问不支持row_number()(仅切换到另一个数据库的原因之一)。一种使用相关子查询的方法来完成您想要的操作:

select c.* 
from cellTB as c
where (select count(*)
       from cellTb as c2
       where c2.Acell = c.Acell and
             c2.id <= c.id  -- this is the primary key column
      ) <= 5;

这假设您的表有一个主键,在此示例中称为id

最新更新