我收到一条错误消息
查询表达式“ r = row_number()超过(按ACell顺序按ACell顺序划分)”中的语法错误(缺少运算符)
在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 Access中重复的ACell中仅选择前5名。
答案 0 :(得分:1)
您的代码是 T-SQL 。对于 Access SQL ,例如,您可以使用我以前发布过几次的 RowNumber 函数:
答案 1 :(得分:1)
MS Access不支持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
。