select * from (select e.* , rownum rn from (select * from emp)e  where rownum <=10) where rn >= 6;
这句话能行,有结果输出
 select * from (select e.* , rownum from (select * from emp)e  where rownum <=10) where rownum >= 6;为什么就没有结果输出呢

解决方案 »

  1.   

    select * from (select e.* , rownum from (select * from emp)e where rownum <=10)  where rownum >= 6
    注意 最后一个ruwnum 是 最后查询的rowmun  
    rownum 的有效应该是 <= 
    里面的  where rownum <=10 只限定与子查询内部 正确的写法
    select * from (select e.* , rownum  rn /*弄个别名*/ from (select * from emp)e where rownum <=10)  where rn >= 6 -- 这里用别名要不 这里的rownum 就是新的不是你原来的
      

  2.   

    新注册的菜鸟,由于没有分在这发下帖子,求助大家。Q:一个表里有id,col1,col2,col3四个字段,比如数据如下:   id  col1 col2 col3 
       1   1    0     1
       2   0    1     0
       3   1    0     0现在想对行列分别统计个字段“1”的个数及占总数的百分比,希望得到的结果如下:   id    col1   col2   col3    总数     百分比
       1     1      0       1      2      60.6%
       2     0      1       0      1      33.3%
       3     1      0       0      1      33.3%
    百分比 60.6%    33.3%  33.3%对于一列求百分比会求,现在不知道对行进行各字段怎么求,大家帮忙看下,菜鸟在此谢谢了。
      

  3.   


    顾名思义啊,,‘伪列’ rownum 就是假的列的意思,ORACLE给随机生成的一个序列~~
    例如你用row_number() ,rank() 也会生成一个类似伪列的列。rownum 一般只支持‘<’ 大于等于只有rownum>=1 or rownum >0的时候成立,原因是rownum的起始列必须为1.随便说说,不知道有帮助否