sql 取出分组后每组前N条记录

tkggusraqk 2011-03-28 03:03:42
sql 取出分组后每组前N条记录
...全文
721 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈南 2012-06-20
  • 打赏
  • 举报
回复
select * from (
select * from P_Products p
where 5 > (
select count(*) from P_Products where Reserved1 = p.Reserved1
)
) p

我是这样实现的
wormhole1024 2011-03-30
  • 打赏
  • 举报
回复
form ——>from
wormhole1024 2011-03-30
  • 打赏
  • 举报
回复
select * from (select *,rank() over (partition by [分组的字段] order by [根据谁排序的字段] desc/asc)rn form [表名])temp where rn <N

tkggusraqk 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzmsyt 的回复:]
sql 取出分组后每组前N条记录
select top10 * from tablename where 。。。Group by。。。。。
[/Quote]
你有没有试过呀,就发上来了,这样的代码只能出来10条记录,不是每组都会有10条。单条SQL语句不可能实现的
SirDevil 2011-03-30
  • 打赏
  • 举报
回复
sql2000里面怎么实现?没有row_number()和rank()函数啊?
watermelon_2008 2011-03-30
  • 打赏
  • 举报
回复
用临时表,先分组,后在取10条就可以了~
缪军 2011-03-30
  • 打赏
  • 举报
回复
请参考MSDN关于开窗函数的文章:
http://msdn.microsoft.com/zh-cn/library/ms189461.aspx
缪军 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 pittroll 的回复:]
引用 6 楼 wormhole1024 的回复:
select * from (select *,rank() over (partition by [分组的字段] order by [根据谁排序的字段] desc/asc)rn form [表名])temp where rn <N

应该是用row_number()吧。
[/Quote]

那要看是排序还是排名,道理是一样的,看楼主需要了,
PitTroll 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wormhole1024 的回复:]
select * from (select *,rank() over (partition by [分组的字段] order by [根据谁排序的字段] desc/asc)rn form [表名])temp where rn <N
[/Quote]
应该是用row_number()吧。
hepeng_8 2011-03-30
  • 打赏
  • 举报
回复
在分组的时候加上判断 子查询 加个 top
缪军 2011-03-30
  • 打赏
  • 举报
回复
不好意思,多嘴了,刚才没看6楼的回复
缪军 2011-03-30
  • 打赏
  • 举报
回复
利用开窗函数,一条语句就可以了,思路如下:
1.利用ROW_NUMBER()OVER(partition BY [分组条件1]...[,分组条件n] ORDER BY [排序条件1]...[,排序条件n])
2.过滤出ROW_NUMBER小于等于N的数据
3.Sql这样大致:
SELECT * FROM (
SELECT
SN = ROW_NUMBER()......(这里按照上面给出的公式)
,*
FROM [表]
) tmp
WHERE tmp.SN <=@MaxNumber (@MaxNumber就是你要的N)
kid_wang 2011-03-30
  • 打赏
  • 举报
回复
你每组的前N条是合成一个表了,还是返回多个啊。
zzmsyt 2011-03-28
  • 打赏
  • 举报
回复
是不是这么个意思啊
zzmsyt 2011-03-28
  • 打赏
  • 举报
回复
sql 取出分组后每组前N条记录
select top10 * from tablename where 。。。Group by。。。。。
lml123lml 2011-03-28
  • 打赏
  • 举报
回复
敢不敢把问题说的详细点。。。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧