【问题标题】:Getting syntax error (missing operator) in query expression in MS Access在 MS Access 中的查询表达式中出现语法错误(缺少运算符)
【发布时间】:2019-07-18 10:29:27
【问题描述】:

我收到一条错误消息

查询表达式'r = row_number() over (partition by ACell order 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 Access 中的重复 ACell 中仅选择前 5 个。

【问题讨论】:

  • 这是发送到 SQL Server 的传递查询吗?如果不是,则语法不正确,因为 Access 不支持窗口函数
  • 我不知道如何在 Access 中使用这些命令 'r = row_number() over (partition by ACell order by ACell desc)'。
  • 编辑问题以显示示例数据和所需的输出。您需要 Access 查询对象吗?
  • @June7 我已经输入了我想要从这个查询中得到的示例数据和输出。

标签: sql database ms-access


【解决方案1】:

你的代码是 T-SQL。例如,对于 Access SQL,您可以使用我之前多次发布的 RowNumber 函数:

Sequential row numbers

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      相关资源
      最近更新 更多