壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1483|回复: 0

Oracle数据库中查询数据表中的前N名、后N名、中间N名记录的方法

[复制链接]
发表于 2007/10/1 15:28:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=599465
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 17:07 , Processed in 0.011086 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表