sql游标问题?

zxhxiaoyi51 2011-03-14 11:26:23
SELECT * FROM
(SELECT
*,ROW_NUMBER() OVER(PARTITION BY a ORDER BY a) row
FROM
t2)T
WHERE
row <= 5


谁能解释一下这段代码。
(低下是相关数据,1是要分组的列,2是数据列,3是标识列)。结果:按第一列分组,每一组取前5个数据。回答问题的代码,在上面已经显示,请高手解释这段代码的意思。
1 你 1
1 好 2
1 是 3
2 个 4
1 三 5
1 晕 6
2 晕 7
2 色 8
3 不 9
3 不 10
3 不 11
3 不 12
3 不 13
3 不 14
3 不 15
3 不 16
...全文
71 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zxhxiaoyi51 2011-07-15
ROW_NUMBER() 和OVER() 2个函数可以分开使用吗
回复
zxhxiaoyi51 2011-03-30
没人说了。。。
回复
zxhxiaoyi51 2011-03-24
PARTITION BY 这个玩意不能单独使用吗

ROW_NUMBER() 和OVER() 2个函数可以分开使用吗
回复
zfwjh 2011-03-22

CREATE TABLE TestTable(
id int,
test varchar(2) )

insert into TestTable(id,test) values( '1','你')
insert into TestTable(id,test) values( 1,'好')
insert into TestTable(id,test) values( 1,'是')
insert into TestTable(id,test) values( 2,'个')
insert into TestTable(id,test) values( 1,'三')
insert into TestTable(id,test) values( 1,'晕')
insert into TestTable(id,test) values( 2,'晕')
insert into TestTable(id,test) values( 2,'色')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')
insert into TestTable(id,test) values( 3,'不')

SELECT * FROM
(SELECT *,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY test) row
FROM
TestTable)T
WHERE
row <= 5

id test row
1 好 1
1 你 2
1 三 3
1 是 4
1 晕 5
2 个 1
2 色 2
2 晕 3
3 不 1
3 不 2
3 不 3
3 不 4
3 不 5

回复
zxhxiaoyi51 2011-03-22
ROW_NUMBER() OVER(PARTITION BY a ORDER BY a)

PARTITION 一定要在这个函数中使用吗?
回复
快溜 2011-03-14
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组
回复
zxhxiaoyi51 2011-03-14
不能想问游标问题,结果。 悲剧。。。。。。。。。
回复
gw6328 2011-03-14
这哪里是游标问题?
回复
Xiao_Ai_Mei 2011-03-14
a是分组列,order by 是必须的。这里再按照a排序,意义不大
回复
王向飞 2011-03-14
分栏 分区 分窗
回复
zxhxiaoyi51 2011-03-14
意思我明白。ROW_NUMBER() OVER(PARTITION BY a ORDER BY a)这个函数是什么意思。
为什么会有这个结果。PARTITION BY 什么意思?!
回复
Xiao_Ai_Mei 2011-03-14
按分组列,生成1个从1递增的列
最后取小于5的
回复
zxhxiaoyi51 2011-03-14
楼上 书面语言也忒明显了。。。。通俗。。表复制。。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-03-14 11:26
社区公告
暂无公告