Oracle 8i环境
版本号
Oracle8 Release 8.0.5.0.0 - Production(版本号)
PL/SQL Release 8.0.5.0.0 - Production
CORE Version 4.0.5.0.0 - Production
TNS for 32-bit Windows: Version 8.0.5.0.0 - Production
NLSRTL Version 3.3.2.0.0 - Production问题:我想查找出按ordernum字段排序后的最大1000行数据select * from (select * from orders order by ordernum desc) where rownum<1000但order by 处提示错误ora-0090缺少右括号
在这里搞了好久,没搞定啊!高手请教高手!

解决方案 »

  1.   

    本帖最后由 wildwave 于 2010-04-29 11:09:21 编辑
      

  2.   

    8I,这个版本也太老了吧
    刚查了下,似乎WITH AS 是标准SQL里的东西,8I执行标准SQL吧
    用下面的试试with orders_temp as 
    (select * from orders order by ordernum desc)
    select * from orders_temp where rownum<1000;
      

  3.   

    没有环境,我来乱猜测一下:select * from (select * from orders order by ordernum desc) t  where rownum<1000
      

  4.   

    我的是10g--你的语句在10g没有语法错误--如楼上说你的版本没有子查询
    create view v1
    as
    select * from orders order by ordernum descselect * from v1 where rownum<1000
      

  5.   


    你说的语句可能在你的环境下没问题,但在
    Oracle8 Release 8.0.5.0.0下却实行不通~
      

  6.   


    不好意思,只能帮你顶一下
    (你的理解是先查出1000行在排序,而楼主的意思是先排序在找出最大的1000行)
    或许大家的环境不一样,LZ的环境是oracle8i 8.0.5老版的
    在找找其它高手吧