select A1*2 as BB from Table1 
上面查询语句执行正确(A1是字段名称)
但一用排序就出错了
select A1*2 as BB from Table1 
Order   By   BB   desc出错提示 参数BB没有默认值

解决方案 »

  1.   

    select A1*2 as BB from Table1  
    Order By A1*2 desc
      

  2.   

    Order By A1 desc
    或者
    Order By A1*2 desc结果是等效的
      

  3.   

    ++ 在Sql中 as 列名 ORDER BY 中是无效的还是得用原来的名称
      

  4.   

    感谢各位朋友的热心帮助。现在明白了。现在问题是我的计算字段不是像上面这样简单,有点复杂, 
    如: 100*Table1.Field1 * (1- 1 / Table2.Field2 - 1/Table3.Field3)
    这样,如果排序时再用这个公式,是不是执行上的效率会降低些呢?
      

  5.   

    实际上2L已经告诉你了,对原始字段和计算后的字段排序结果是等效的,所以如果需要,可以对多个字段进行orderby
      

  6.   

    例如 orderby field1,field2,fild3
     
      

  7.   

    100*Table1.Field1 * (1- 1 / Table2.Field2 - 1/Table3.Field3)像这样三个表的字段的计算结果,你说按那个原始字段排序?
    access怎么这么差劲,在sql server中很简单的事。
      

  8.   

    orderby Table1.field1,table2.field2 desc ,Table3.fild3 desc
    这样吗?
    另外,如果还想对计算字段有个筛选,怎么办, 本来很简单 where newfield > 0 现在是不是只有把计算公式重新写这里?
      

  9.   

    access本来就很差劲,我用in子查询某个东西要好几分钟,痛苦了很久,后来经过人家指点改成inner join两个表1秒钟不到就出来了,据说是因为in子查询在access中没优化。
      

  10.   

    你可以用嵌套查询,看这里
    select t1,t2,c from
    (SELECT a*2 as t1,b+2 as t2,c
    FROM Table1) as table2
    order by table2.c,table2.t2
      

  11.   

    刚才忘了写了where条件也可以写在嵌套查询外
    select t1,t2,c from
    (SELECT a*2 as t1,b+2 as t2,c
    FROM Table1) as table2
    where table2.c='c'
    order by table2.c,table2.t2
      

  12.   

    不想按公式排序,那只能再嵌套一个查询了,条件最好放在子查询中如:
    select * from
    (SELECT a*2 as A,B
    FROM Table1 where B='B') as t
    order by A