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
...全文
94 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
楼上 书面语言也忒明显了。。。。通俗。。表复制。。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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