SQL语句问题:如何按指定行数算SUM值???

njtlxm 2001-11-30 03:08:47
如果数据库中有100条记录,按字段1排序,字段2是数值,现在想每10条算字段2 的总和,就是第1条到第10条算一个值,第11到20算一个值......怎么办??SQL语句如何实现???
...全文
279 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtlxm 2001-12-02
  • 打赏
  • 举报
回复
100条记录只是一个例子,实际上我有34万条记录,不可能一次读到前端程序,因为速度不能满足要求。也不能用游标,因为前端程序不能直接访问数据库,是一个类似三层结构的框架。
njtlxm 2001-12-02
  • 打赏
  • 举报
回复
多谢各位,我已经实现了,方法同tanghuan(),多谢!
tanghuan 2001-11-30
  • 打赏
  • 举报
回复
如果你是在SQLSERVER中
select ID=identity(int ,1,1),*
into #TempTable
from OldTable
order by field1

select id/10,sum(field2)
from #TempTable
group by id/10
seafo 2001-11-30
  • 打赏
  • 举报
回复
如果你的字段1是自动增长且中间无断行
select sum(字段2) from testtable
group by(字段1/10)
guohong98 2001-11-30
  • 打赏
  • 举报
回复
加个标志字段(1,2,3,4...),用group by实现
N_chow 2001-11-30
  • 打赏
  • 举报
回复
或者這種運算就干腕搬到前端程式里做好了
N_chow 2001-11-30
  • 打赏
  • 举报
回复
以下代碼在SQL 2000下測試通過。
/*程式里是每2筆加一次,可根據情況把@idx=2改成想要的筆數*/
/* temp table #result存的是結果,第一筆為1~2的加總,第二筆為3~4的加總……*/


Declare @p table (id int ,fld int)
declare @cnt int
declare @pct int
declare @idx int

set @cnt=0
set @pct=0
set @idx=0

insert into @p values (1,1)
insert into @p values (2,3)
insert into @p values (3,5)
insert into @p values (4,7)
insert into @p values (5,10)
insert into @p values (6,11)
insert into @p values (7,30)
insert into @p values (8,133)

create table #result (result int)

declare abc Cursor for select fld from @p order by id
open abc
Fetch next from abc into @pct
while @@Fetch_status=0
begin
SET @cnt=@cnt+@pct
set @idx=@idx+1
IF @idx=2
Begin
insert into #Result(Result) values (@cnt)
set @idx=0
set @cnt=0
end
fetch next from abc into @pct
end
select fld from @p
select * from #Result
drop table #Result
close abc
deallocate abc
wlk 2001-11-30
  • 打赏
  • 举报
回复
我也觉得用Cursor来实现
N_chow 2001-11-30
  • 打赏
  • 举报
回复
想來想去,反正只有100條記錄,就用Cursor來實現吧。
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2001-11-30 03:08
社区公告
暂无公告