sql 2000分组问题?

cgl7822 2015-10-23 11:58:33
表A有100个数据

求每5个记录分组,就是5个记录为一个组

表A
a1 a2
--------------------
1 a
2 b
3 c
4 d
5 e
6 4
7 f
8 ac
9 g
10 m
11 aa
..
添加一个虚拟新字段 a3 查询结果如下 没五个记录添加 1,2,3 ......分组生成 虚拟新字段 a3

a1 a2 a3
--------------------
1 a 1
2 b 1
3 c 1
4 d 1
5 e 1
6 4 2
7 f 2
8 ac 2
9 g 2
10 m 2
11 aa 3
12 bb 3
13 cc 3
14 dd 3
15 gg 3
16 rr 4
...
...
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowpj 2015-10-26
  • 打赏
  • 举报
回复
搞定了兄弟!分给我把 select ((select count(1) from A t2 where t2.a1<=t1.a1)-1)/5+1 as a3, ((select count(1) from A t2 where t2.a1<=t1.a1)-1)%5+1 as a4, a1,a2 from A t1
cgl7822 2015-10-24
  • 打赏
  • 举报
回复
大哥我的是SQL2000呀
kidbuu 2015-10-24
  • 打赏
  • 举报
回复
select a1,a2,(rn+4)/5 as a3 from (select row_number() over (order by (select 1)) as rn,a1,a2 from A) as t
习惯性蹭分 2015-10-24
  • 打赏
  • 举报
回复
如果表A中A1是從1 開始的自增長序列可以以下語句:

select a1,a2,ceiling(a1/5.) as rn
from [表A]
卖水果的net 2015-10-24
  • 打赏
  • 举报
回复

-- 参考一下这个写法,效率可能会差点。。
select top 16  id , cast(name  as varchar(10)) name into test 
from sysobjects 
order by id 
go
select id , name , (select COUNT(*) from test x where test.id > id ) / 5 + 1 as newcol
 from test 
go
drop table test 
go


(16 行受影响)
id          name       newcol
----------- ---------- -----------
3           sysrscols  1
5           sysrowsets 1
7           sysallocun 1
8           sysfiles1  1
17          syspriorit 1
19          sysfgfrag  2
23          sysphfg    2
24          sysprufile 2
25          sysftinds  2
27          sysowners  2
29          sysprivs   3
34          sysschobjs 3
41          syscolpars 3
44          sysnsobjs  3
46          syscerts   3
49          sysxprops  4

(16 行受影响)



22,209

社区成员

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

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