sql 以行数分组

如题。我想用指定行数的记录分组。不知道SQLSERVER2005怎么实现例如:tidnum1102638415863我想要的结果是:(以每三行分组)num2412以两行分... 如题。我想用指定行数的记录分组。不知道SQL SERVER 2005 怎么实现

例如:
t

id num
1 10
2 6
3 8
4 1
5 8
6 3

我想要的结果是:(以每三行分组)
num
24
12

以两行分组
num
16
9
11
展开
 我来答
微风8009
2013-07-26 · TA获得超过304个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:169万
展开全部
以每3行分组
select 组号=ceiling(row_number()over(order by id )/3),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/3)

以每2行分组
select 组号=ceiling(row_number()over(order by id )/2),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/2)
追问
我测试了这个基本符合了我想要的结果。我想问问。如果ID不连续怎么办?有时候insert 错误会导致下次插入的记录的ID和上一个记录不是连续的。不知道你怎么解决怎个情况
射手幽灵伊
2013-07-26 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:2036万
展开全部
使用ntile实现
select sum(num) num from
( select ntile(2) over ( order by id ) n_id ,* from 表 ) a
group by n_id

select sum(num) num from
( select ntile(3) over ( order by id ) n_id ,* from 表 ) a
group by n_id
追问
这位大哥可能理解错我的意思了。用 ntile(X)得到X个分组。我想要的是以指定X行记录分成一个分组。最后按记录数不同得到不同个数的分组。每个分组的count(*)都是X,除非最后一不足才能小于X
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式