有一个数据库中的表DATA,其结构如下:  F     T     S   (字段名称)
-----------------
  0     9     A   (数据内容)
  2     8     B
  3     8     C
  5     5     D
  7     9     E
  …    …    … 
其中F和T字段类型为"数字", S字段为"文本"。
在这个表中,保证了T是大于等于F的。(T>=F)现在我想做到这样的一个筛选:
我已知一个数A,要在这个表中找出 F <= A <= T 的项目。
这个好办:SQL可以写为:
---------------------------
"select * from DATA where " & A &" BETWEEN F and T"
---------------------------
或者
---------------------------
"select * from DATA where F<=" & A & " and T>=" & A
---------------------------现在我想扩展一下,
我已知一个数A,要在这个表中找出 T <= A <= F 的项目;
并要求找出的项目按照 T减去F (T-F) 的数值递增排序。
我写下了这样的SQL语句:
------------------------------------
"select *,T-F as E from DATA where " & A &" BETWEEN F and T order by E" 
------------------------------------

------------------------------------
"select * as E from DATA where " & A &" BETWEEN F and T order by T-F" 
------------------------------------

------------------------------------
"select *,T-F as E from DATA where F<=" & A & " and T>=" & A &" order by E" 
------------------------------------

------------------------------------
"select D1.F, D1.T, D1.A, D2.T-D2.F as E from DATA as D1, DATA as D2 where " & A &" BETWEEN D1.F and D2.T  order by E"
------------------------------------
以及很多类似的结构……然而这些结构都要出错。
----------
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' 
ODBC 驱动程序不支持所需的属性。
----------
然而我把这任何一句的 "order by …" 去掉,又能正常执行,但是不能满足要求找出的项目按照 T减去F (T-F) 的数值递增排序。
去掉 "order by …" 这部分后,“E” 项目是能够在后面被引用的(E=T-F满足)。我给出我具体在代码中的这部分:
-----------------
set dbconnection=server.createobject("adodb.connection")
dbconnection.open dbtab
set dbrs=server.createobject("adodb.recordset")
sqlquery="select *,T-F as E from DATA where F<=" & A & " and T>=" & A & " order by E"
dbrs.source=sqlquery
dbrs.open sqlquery,dbtab,1,1
-----------------
老是就是在这段代码的最后一行出错。
分析以上问题。我认为是我的SQL写的有问题。
哪位朋友能帮我看看,重写一下满足这个条件的SQL语句。万分感激。谢谢支持!