sql列统计求和

我有一张表,里面有200个字段。我通过没条件查询,假设查出10条数据,现在我要把这10条数据按照相同的列进行加和,如果字段少的话 我这样写sql:select sum(A),sum(B),sum(C)from table 但是现在200多个字段我该怎么写呢,求大家帮看看 不要用什么游标,那个我不懂。谢谢啦

第1个回答  2013-08-14
--借用楼上的,不用游标。其实游标很方便的

create PROCEDURE [dbo].Sum200
AS
BEGIN

DECLARE @n int
DECLARE @fieldname varchar(8000)

declare @sql varchar(8000)
set @sql='select '
SET @n = 1
SET @fieldname = ''
WHILE @n < 201
begin

select @fieldname =name from syscolumns where id=object_id('table1') and colid=@n
---枚举字段名称

set @sql=@sql+' sum('+@fieldname+') as '+@fieldname+cast(@n as varchar(3))
if @n<=200 set @sql=@sql+' , '
set @n = @n +1

end
set @sql = @sql+' from table1'
print @sql
第2个回答  2013-08-14
declare @sql nvarchar(max)
select @sql=isnull(@sql,'')+'sum('+name+'),' from sys.columns where object_id=object_id('customer')
set @sql='select '+left(@sql,len(@sql)-1)+' from 表名'
exec(@sql)

第3个回答  2013-08-14
针对你这个问题,已经有几位达人回答了。
我想说的是你的表怎么会设计成有200个字段这么多。
这么宽的表数据存储时必然造成行迁移,这对应用的性能必然有较大影响。
所以,建议将表拆分,以后很多方面都会很方便追问

这个是个统计报表,其实没那么多字段 总共两张表一张表能有8 9十个字段吧 对于oracle函数我不怎么会,所以不知道怎么弄了

追答

我的建议还是把表拆分开来,然后用join连接显示,比如;
select sum(a.A),sum(a.B),sum(b.C) from table1 a join table2 b on a.nodeid=b.nodeid;

第4个回答  2013-08-14
你说得不太清楚啊,你是要对A1 A2 .... A200,每个列都求和,最后得出Sum1 Sum2... Sum200?追问

对 就是每列求和

追答

你写200个字段有什么难的啊,何必搞那么麻烦

相似回答