MS Access:按计算字段排序(使用别名)

时间:2014-04-01 10:05:45

标签: sql ms-access

在选择查询中,我使用嵌套选择计算字段。我想按计算字段(排名)排序结果,但Access无法识别字段排名。 (当我运行查询时,Access会询问排名的参数值。)

SELECT
  *,
  (select count(*)
   from tbl as tbl2
   where tbl.customers > tbl2.customers and tbl.dept = tbl2.dept
  ) + 1 as rank
FROM tbl
ORDER BY rank

[示例查询来自this帖子]

3 个答案:

答案 0 :(得分:4)

使用派生表

SELECT * FROM
(
SELECT
  *,
  (select count(*)
   from tbl as tbl2
   where tbl.customers > tbl2.customers and tbl.dept = tbl2.dept
  ) + 1 as rank
FROM tbl
) as newtbl
ORDER BY rank

答案 1 :(得分:0)

认为你必须:

order by ((select count(*) from tbl as tbl2 where
tbl.customers > tbl2.customers and tbl.dept = tbl2.dept) + 1)

答案 2 :(得分:0)

(步骤1)开始编写一个访问查询,您将调用QUERY1,其中包含计算出的字段作为别名

(第2步)编写第二个查询QUERY2,该查询引用带有子句ORDER BY的QUERY1,该子句包含您在QUERY1中创建的别名。

(第3步)对其进行测试,以及它是否按预期工作:

(步骤4)通过将子句“ SELECT FROM QUERY1”替换为子句“ SELECT FROM(XXXXX)”来修改QUERY2,其中XXXXX将包含用于定义QUERY1的所有sql语句,该语句插入两个圆括号内。在右括号后,您可以保留引用别名字段的ORDER BY语句。

应该可以。 一般来说,这种将sql语句分解为Access查询的技术,随后将其引用为表,然后用其包含的sql代码替换,从而解决了许多复杂的嵌套查询问题。

示例:

Quer1 =“ 选择Tabella1.Descriz作为描述,Tabella1.V1,Tabella1.V2,Tabella1.V3,Sqr((Tabella1。[V1] -0.1)^ 2 +(Tabella1。[V2] -0.7)^ 2 +(Tabella1。[V3 ] -0.2)^ 2)AS距离 来自Tabella1“

Quer2(初始版本) =“选择描述,V1,V2,V3,距离 来自( Quer1)ORDER BY distance;“

Quer2(检查后的修改版本)= “选择描述,V1,V2,V3,距离 从(选择Tabella1.Descriz作为描述,Tabella1.V1,Tabella1.V2,Tabella1.V3,Sqr((Tabella1。[V1] -0.1)^ 2 +(Tabella1。[V2] -0.7)^ 2 +(Tabella1。 [V3] -0.2)^ 2)AS距离 来自Tabella1) ORDER BY distance;“