【发布时间】:2015-08-08 18:08:30
【问题描述】:
我有一个 Access 2000 .mdb 文件。我在同一个数据库中有这个查询,但在 SQL Server 上。该查询在 SQL Server 中运行良好,但在 Access 中出现错误;我想这是由于ROW_NUMBER()。
我无法使用 vba 进行此查询,因为我必须使用 Odbc 驱动程序运行它。
SELECT *
FROM
(SELECT
*,
ROW_NUMBER() OVER (ORDER BY cognome,nome ASC) AS RowID
FROM
(SELECT DISTINCT
(a.ID_PAZIENTE) AS codice,
a.NOME AS nome,
a.COGNOME AS cognome,
a.TITOLO AS titolo,
a.TELEFONOABITAZIONE AS tel,
a.TELEFONOUFFICIO AS uff,
a.FAX AS cell,
a.E_MAIL AS email,
a.SESSO AS sesso
FROM
PAZIENTI AS a
WHERE 1 = 1) AS AnagraficheDistinct
) AS Anagrafiche
WHERE
RowID >= 1 AND RowID <= 25
ORDER BY
cognome, nome ASC;
这是错误:
查询表达式中的语法错误(缺少运算符):“ROW_NUMBER() OVER (ORDER BY cognome,nome ASC)
我尝试按照在线文档转换查询,这就是我所做的:
SELECT *
FROM (
SELECT Top 10
*
FROM
(
SELECT DISTINCT TOP 20 p.ID_PAZIENTE,p.cognome,p.nome
FROM PAZIENTI p
ORDER BY p.cognome ASC,p.nome ASC
) AS sub1
ORDER BY sub1.cognome DESC,sub1.nome DESC
) AS anagrafiche
ORDER BY p.cognome ASC,p.nome ASC
不幸的是,这个查询返回了奇怪的结果。更改起始索引 (How do I implement pagination in SQL for MS Access?),有时会返回 10 个结果(页面大小),有时会返回 12 个基于起始索引(startpos + 页面大小)的结果。
我做错了什么或者这件事在没有 VBA 的情况下使用 Access 是不可能的?
谢谢
【问题讨论】:
标签: sql-server ms-access ms-access-2010