SQL语句修改,截取前100条数据

selectb.buyer_uid采购组,a.art_no货号,a.descr描述,a.stock库存,a.sell_pr*(1+t.vat_perc/100)含税售价f... select
b.buyer_uid 采购组, a.art_no 货号, a.descr 描述,a.stock 库存, a.sell_pr*(1+t.vat_perc/100) 含税售价
from article a,tax t,buyer b
where
a.vat_no=t.vat_no
and a.buyer_uid=b.buyer_no
and a.stock<>0
order by
b.buyer_uid,a.sell_pr*(1+t.vat_perc/100) desc;
以上语句,现在取出的是所有采购组的数据,我现在需要做的是,截取每个采购组前100条数据,我应该怎样修改?
展开
 我来答
a405191552
推荐于2018-04-30 · TA获得超过398个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:149万
展开全部

select * from (
select row_number() over(partition by buyer   order by 排序字段) rindex , * from tablename
) where rindex<=100

row_number() over(partition by 分组字段   order by 排序字段)可实现分组f1-f5后再对每个组进行自定的排序编号,外面再嵌套一层select,直接取排序编号为前100的。


我不是已经回答过了么?这个可以解决你的问题,照着模板来啊,

比如你的f1-f5数据记录为

f1  f1a1
f2  f2a1
f3  f3a1
f4  f4a1
f5  f5a1
f1  f1a2
f2  f2a2
f3  f3a2
f4  f4a2
f5  f5a2
........
f1  f1a2000
f2  f2a2000
f3  f3a2000
f4  f4a2000
f5  f5a2000
那么他分组排序后取出的数据是
f1  f1a1       1
f1  f1a2       2
.....
f1  f1a2000    2000
f2  f2a1       1
f2  f2a2       2
........
f2  f2a2000    2000
f3  f3a1
......同上
f4  f4a1
......同上
f5  f5a1
......同上
得出这种数据后,直接取rindex<=100的,每组的前100条数据不就出来了?
追问
不会套用你的字段,你给帮我套用进去,应该是什么样?
greystar_cn
2015-12-05 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17263
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
在外面套一层,用RANK() OVER 排名函数来解决你的问题,
http://www.cnblogs.com/cdemo/p/3951998.html
上面的个示例,看下吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式