Получение синтаксической ошибки (отсутствует оператор) в выражении запроса в MS Access - PullRequest
0 голосов
/ 25 февраля 2019

Я получаю сообщение об ошибке

Синтаксическая ошибка (отсутствует оператор) в выражении запроса 'r = row_number () over (разбиение по порядку ACell по 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

Я хочу выбрать только 5 лучших из дубликатов ACell в MC Access.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

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.

0 голосов
/ 25 февраля 2019

Ваш код T-SQL .Для Доступ к SQL вы можете, например, использовать мою функцию RowNumber , как ранее отправлено несколько раз:

Порядковые номера строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...