sql列统计求和 100

我有一张表,里面有200个字段。我通过没条件查询,假设查出10条数据,现在我要把这10条数据按照相同的列进行加和,如果字段少的话我这样写sql:selectsum(A),... 我有一张表,里面有200个字段。我通过没条件查询,假设查出10条数据,现在我要把这10条数据按照相同的列进行加和,如果字段少的话 我这样写sql:select sum(A),sum(B),sum(C)from table 但是现在200多个字段我该怎么写呢,求大家帮看看 不要用什么游标,那个我不懂。谢谢啦 展开
 我来答
unique_lele
2013-08-14 · TA获得超过112个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:157万
展开全部

第一步 在数据库中 右击-编写脚本为-insert 到

第二步 把字段都拷贝出来


第三步 用替换的方式 把",[" 替换成 "SUM("

 第四步 把"]"括号替换成"),"。

第五步就是把这些列放到一行上面 在替换的时候选择正则表达式 然后把"\n" 换成 "" 空就好。


这个方法看起来步骤多 其实蛮简单的。  希望采纳

随机数xZ
2013-08-14 · TA获得超过357个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:420万
展开全部

可以完成:

  1. 首先拼接成字符串sum(id),sum(name),sum(type) 形式 

  2. 通过动态执行sql Exce('sql') 来执行就可以了.

案例如下:

SELECT * from Tab
DECLARE @str varchar(500)
--得到tab表下的所有列 拼接成字符串sum(id),sum(name),sum(type) 形式 
--过滤当前表 和类型为int的 where TABLE_NAME='tab' AND DATA_TYPE='int'
--INFORMATION_SCHEMA此视图可以检索存储在数据库中的数据对象的元数据
SELECT @str=STUFF( 
(SELECT ',sum('+COLUMN_NAME+')'+COLUMN_NAME+'sum' from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tab' AND DATA_TYPE='int' FOR XML PATH(''))
,1,1,'')
--用动态执行sql语句执行
EXEC('select '+@str+' from tab')

得到表tab所有的DateType属于int的列

效果图如下:

希望能帮到你!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小周爱唠叨
高粉答主

2018-07-05 · 说的都是干货,快来关注
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:33.4万
展开全部

有个思路:
1、在系统表中找出表名对应的列名,并把每个列名都加上SUM()

select 'sum('+name+'),' from syscolumns
where id=(select id from sysobjects where name='表名')
2、把查询结果复制出来,前面加select 后面加 from 表名。。。。你懂的
注意:复制出来后把最后一个逗号去掉。
3、执行查询

也可以写个存储过程来完成。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a800768
推荐于2017-12-16 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1727万
展开全部
有个思路:
1、在系统表中找出表名对应的列名,并把每个列名都加上SUM()

select 'sum('+name+'),' from syscolumns
where id=(select id from sysobjects where name='表名')
2、把查询结果复制出来,前面加select 后面加 from 表名。。。。你懂的
注意:复制出来后把最后一个逗号去掉。
3、执行查询

也可以写个存储过程来完成
更多追问追答
追问
是这样的么 不行啊
select 'sum('+name+'),' from sys_columns where id=(select id from sysobjects where name='archive_report_digital')
追答
你用的是什么数据库,存放列名的表是什么??sys_columns不要中间的线,直接syscolumns  我用的是sybase数据库,表名就是这个
你可以sp_help看下
sysobjects是存放表名的系统表
syscolumns是存放列名的系统表

如果和我的不同,可以按你的系统表名改
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen_hongyang
2013-08-14 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:867万
展开全部
可以使用存储过程做,由于字段有200个,需要使用存储过程枚举出每个字段,再查询
你可以建一个存储过程
USE 数据库
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].存储过程名称
AS
BEGIN
DECLARE @n int
DECLARE @字段名称 varchar
DECLARE @列和 varchar
SET @n = 1
SET @字段名称 = ''
WHILE @n < 201
begin

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

select @列和 = sum(@字段名称) from 表

set @列和 = '第'+@n+'列的和是:'+@列和+','
set @n = @n +1

end

最后输出的结果是 第1列的和是:, 第2列的和是:,......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式