Eyifan专栏

在此写出自己在工作、情感中的心声!

蔡虹ID:aiunong
80470次访问,排名1171(-1)好友11人,关注者21
致力在ERP领域发展,目标成为 供应链专家、顾问。欢迎志同道合的朋友与我联系。
aiunong的文章
原创 28 篇
翻译 0 篇
转载 48 篇
评论 112 篇
蔡虹的公告
欢迎光临,希望大家积极参与进来,共同探讨技术上的问题,当然也欢迎大家讲出自己的动人故事!
联系方式:QQ:82232942


最近评论
kogo2005:推荐一个计算机电子书站点

顺风电子书 - 国内最专业的计算机电子书下载站

http://www.1kip.cn
kogo2005:推荐一个计算机电子书站点

顺风电子书 - 国内最专业的计算机电子书下载站

http://www.1kip.cn
Neetgo:楼主,对不起。网速慢,没想到一下子提交了那么多,我不是有意的。对不起。
Neetgo:仔细想想,自己有很多不满足。要加油哦。

I need to go!
Neetgo:仔细想想,自己有很多不满足。要加油哦。

I need to go!
文章分类
收藏
    相册
    个人专集
    其它
    山海关燕塞湖之旅
    理财资讯
    和讯
    第一理财网
    友情联接
    CSDN葛涵涛专栏
    DPR
    Drate的随笔
    EagleZhang
    股市叶弘BLOG
    知识性网站
    PD11 中文教程
    UMLchina论坛
    UML软件工程组织
    企业方案与案例ERP
    永联软件工程UML
    软件工程专家网
    软件研发之窗(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 原创:Oracle数据库中查询数据表中的前N名、后N名、中间N名记录的方法收藏

    新一篇: IN&EXISTS与NOT IN&NOT EXISTS 的优化原则的讨论(Z) | 旧一篇: 流行音乐

    sql server可以用select top N fields1.. from table 的形式来读取前N条记录。oracle中用ROWNUM来进行排序取值,

    1、从table表中取以field3降序排序的前100名

    eg: SELECT Field1,field2,HeJi from (SELECT Field1,field2,Sum(field3) as HeJi From Table where ...group by field1,field2 order by HeJi desc) where ROWNUM<100

    2、从table表中取以field3升序排序的后100名

    eg: SELECT Field1,field2,HeJi from (SELECT Field1,field2,Sum(field3) as HeJi From Table where ...group by field1,field2 order by HeJi asc) where ROWNUM<100


    3、从table表中取以field3降序排序的中间100名(从第100到第200名)

    eg: SELECT Field1,field2,HeJi   from
        (SELECT ROWNUM R,Field1,field2,HeJi from
        (SELECT Field1,field2,Sum(field3) as HeJi From Table where ...group by field1,field2 order by HeJi desc)
         where ROWNUM<201)
         where ROWNUM>100

    以下是从程序中抽出的一部分:

    //以下这句是查询 17库的2006年1月份销售排行 中的后100种产品(按数量降序)
    select goodsid,goodsname,purchaseprice,sellprice1,sellprice,gunit,spec,aa from
    (select  b.goodsid,b.goodsname,b.purchaseprice,b.sellprice1,b.sellprice,b.gunit,b.spec,sum(a.tsxqty) as aa from sa_sale_ct a,hq_goods b  where (a.tsxpluno=b.barcode or a.tsxpluno=b.barcode1 or  .tsxpluno=b.barcode2) and depotid='17' and  a.tsxtrnno like '2006/01%'
    group by b.goodsid,b.goodsname,b.purchaseprice,b.sellprice1,b.sellprice,b.gunit,b.spec
    order by aa ASC,goodsid ASC) where ROWNUM<100

    //以下这句是查询 17库的2006年1月份销售排行 中的中间100名产品(第100到第200名的产品)(按数量升序)
    SELECT goodsid,goodsname,purchaseprice,sellprice1,sellprice,gunit,spec,aa from
    (select ROWNUM r,goodsid,goodsname,purchaseprice,sellprice1,sellprice,gunit,spec,aa from
    (select b.goodsid,b.goodsname,b.purchaseprice,b.sellprice1,b.sellprice,b.gunit,b.spec,sum(a.tsxqty) as aa from sa_sale_ct  a,hq_goods b
    where (a.tsxpluno=b.barcode or a.tsxpluno=b.barcode1 or a.tsxpluno=b.barcode2) and depotid='17' and
    a.tsxtrnno like '2006/01%'
    group by b.goodsid,b.goodsname,b.purchaseprice,b.sellprice1,b.sellprice,b.gunit,b.spec
    order by aa DESC)
    where ROWNUM<201)
    where r>100

    发表于 @ 2006年02月15日 13:50:00|评论(loading...)|编辑

    新一篇: IN&EXISTS与NOT IN&NOT EXISTS 的优化原则的讨论(Z) | 旧一篇: 流行音乐

    评论

    #EagleZhang 发表于2006-02-15 17:37:00  IP: 219.142.130.*
    牛!
    写的非常好。解决了我好久没想出的问题
    #lwjvince 发表于2007-01-17 18:20:01  IP: 222.125.200.*
    3、从table表中取以field3降序排序的中间100名(从第100到第200名)

    eg: SELECT Field1,field2,HeJi
    (SELECT ROWNUM R,Field1,field2,HeJi from
    (SELECT Field1,field2,Sum(field3) as HeJi From Table where ...group by field1,field2 order by HeJi desc)
    where ROWNUM<201)
    where ROWNUM>100

    -----------
    有笔误, 少了一个from一个括号
    #aiunong 发表于2007-01-20 12:57:11  IP: 219.148.130.*
    TO: lwjvince
    不知道你是不是指第一个括号没有右括号,如果是的话,其实并没有少在:where ROWNUM<201)
    中的这个后括号是对应第一个括号的左括号的,呵呵。

    不过是少了一个from ,呵,已添加。谢谢!
    #greatkong 发表于2007-04-03 23:15:13  IP: 218.20.0.*
    PL/SQL与T-SQL有些语法还是不同的。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 蔡虹