一条记录所有字段如何相加 有一张表,表里面的字段不固定,可以添加删除。字段类型是smallmoney。现在想把一条记录的所有列相加。SQL语句如何实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个表的字段不固定,那这个表设计的有问题。问什么不把每个字段转换为行呢?例如id money,这样要求和就很简单了 这样的问题,应该想想表 的设计是否有问题,而不是考虑sql如何去写。即使能勉强写出来,效率也不高 create table Test (id varchar(10),Col0 int,Col1 int,Col2 int,Col3 int,Col4 int,Col5 int,Col6 int,Col7 int,Col8 int,Col9 int,Col10 int,Col11 int,Col12 int,Col13 int,Col14 int,Col15 int,Col16 int,Col17 int,Col18 int,Col19 int)insert test values(1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)insert test values(2,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39)insert test values(3,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119)insert test values(4,200,201,202,203,204,205,206,207,208,209,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019)insert test values(5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)godeclare @sql varchar(8000)set @sql = 'select t.* , 'select @sql=isnull(@sql + '' , '') + name + '+'from syscolumns where id=object_id('test') and name != 'ID'select @sql=left(@sql,len(@sql)-1) + ' [所有列相加的和] from test t' exec(@sql)/*id Col0 Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 Col19 所有列相加的和 ---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1902 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 5903 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 21904 200 201 202 203 204 205 206 207 208 209 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 221905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/drop table test 还请问一下,如何合并语句成一条SQL? 什么是参照完整性 sql server里面有远程服务器,不是我添加的,怎么办 请问一堆远程访问数据库的问题 sp_who和sp_helplogins有什么区别? 如何将两个不同的数据库合并成一个数据库 有关异机数据库备份问题 这样的两句话为何执行结果一样? 为什么往表中添加了某些行后,删除后会提示"键列信息不足或不正确,更新影响到更多的行。 多谢 jinancf(单身汉) 兄,请进来领分…… ADO连接SQLSERVER2000问题!急~~~~~~~ SQL2005开发版安装失败,计算机不符合SQL版本最低系统要求,高手支个招吧,纠结死我了。不差分 如何降低DB_ower用户的权限
(id varchar(10),
Col0 int,
Col1 int,
Col2 int,
Col3 int,
Col4 int,
Col5 int,
Col6 int,
Col7 int,
Col8 int,
Col9 int,
Col10 int,
Col11 int,
Col12 int,
Col13 int,
Col14 int,
Col15 int,
Col16 int,
Col17 int,
Col18 int,
Col19 int
)insert test values(1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
insert test values(2,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39)
insert test values(3,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119)
insert test values(4,200,201,202,203,204,205,206,207,208,209,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019)
insert test values(5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
godeclare @sql varchar(8000)
set @sql = 'select t.* , '
select @sql=isnull(@sql + '' , '') + name + '+'
from syscolumns where id=object_id('test') and name != 'ID'
select @sql=left(@sql,len(@sql)-1) + ' [所有列相加的和] from test t'
exec(@sql)/*
id Col0 Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 Col19 所有列相加的和
---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 190
2 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 590
3 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 2190
4 200 201 202 203 204 205 206 207 208 209 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 22190
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
*/drop table test