MS-Access - > SELECT AS + ORDER BY =错误

Con*_*ark 7 sql ms-access select sql-order-by

我正在尝试查询检索甜食产品销售额最多的地区.'grupo_produto'是产品类型,'regiao'是该地区.所以我得到了这个问题:

SELECT TOP 1 r.nm_regiao,  (SELECT COUNT(*)
        FROM Dw_Empresa
        WHERE grupo_produto='1' AND 
        cod_regiao = d.cod_regiao) as total 
FROM Dw_Empresa d
INNER JOIN tb_regiao r ON r.cod_regiao = d.cod_regiao ORDER BY total DESC
Run Code Online (Sandbox Code Playgroud)

然后,当我运行查询时,MS-Access会询问"total"参数.为什么它不考虑我在select子句中创建的新"列"?

提前致谢!

Oli*_*i_G 12

旧问题我知道,但它可能有助于某人知道,而不是你不能通过别名订购,你可以按列索引排序.例如,这将无错误地工作:

SELECT 
 firstColumn,
 IIF(secondColumn = '', thirdColumn, secondColumn) As yourAlias
FROM
 yourTable
ORDER BY
 2 ASC
Run Code Online (Sandbox Code Playgroud)

然后,结果将按第二列中找到的值排序,即Alias"yourAlias".


Vot*_*ple 7

别名只能在查询输出中使用。您不能在查询的其他部分使用它们。不幸的是,您必须复制并粘贴整个子查询才能使其工作。

  • “你不能在查询的其他部分使用 ['aliases']”——这是因为那些“其他部分”在 `SELECT` 子句之前被解析。然而,`ORDER BY` 子句在`SELECT` 子句之后应用,所以它不应该是一个问题......它*不应该*但在Access中它是:( (3认同)

小智 6

你可以这样做

select * from(
  select a + b as c, * from table)
  order by c
Run Code Online (Sandbox Code Playgroud)

Access 与 Sql Server 相比有一些差异。