Tsql 为X列手动定义的T-SQL总和值
我试图Tsql 为X列手动定义的T-SQL总和值,tsql,sql-server-2012,Tsql,Sql Server 2012,我试图在一个名为Total的列中插入一个值,计算一周中花费的小时数 我在网站上有一个表单,允许用户输入周一、周二、周三、周四、周五、周六和周日的值 我可以通过每个字段的标记访问输入的值。IE:如果我需要Mon的值,我可以使用[Mon]获取它,它将提取用户在列中输入的任何数字 使用此功能,我可以构建一个查询,例如: INSERT INTO MyTbl (Mon, Tues, Weds, Thurs, Fri, Sat, Sun,) VALUES ('[Mon]', '[Tues]', '[Weds
在一个名为Total
的列中插入一个值,计算一周中花费的小时数
我在网站上有一个表单,允许用户输入周一、周二、周三、周四、周五、周六和周日的值
我可以通过每个字段的标记访问输入的值。IE:如果我需要Mon的值,我可以使用[Mon]获取它,它将提取用户在列中输入的任何数字
使用此功能,我可以构建一个查询,例如:
INSERT INTO MyTbl (Mon, Tues, Weds, Thurs, Fri, Sat, Sun,)
VALUES ('[Mon]', '[Tues]', '[Weds]', '[Thurs]', '[Fri]', '[Sat]', '[Sun]')
我无法将此查询修改为SUM
当天的所有值作为我的Total
列插入值
大概是这样的:
INSERT INTO MyTbl (Mon, Tues, Weds, Thurs, Fri, Sat, Sun, Total)
VALUES ('[Mon]', '[Tues]', '[Weds]', '[Thurs]', '[Fri]', '[Sat]', '[Sun]',
SUM('[Mon]', '[Tues]', '[Weds]', '[Thurs]', '[Fri]', '[Sat]', '[Sun]'))
请注意,在SQL Server中,所有列都设置为VARCHAR
datatype
任何帮助或例子,不胜感激
如果数据如下所示:
Mon, Tues, Weds, Thurs, Fri, Sat, Sun
1 2 3 4 5 6 7
我需要一个Total
字段,该字段将在INSERT
中对所有日值求和,如:
Mon, Tues, Weds, Thurs, Fri, Sat, Sun, Total
1 2 3 4 5 6 7 28
基本上,我需要一些查询来计算Total
字段,在本例中,28
的值和INSERT
将其插入我表中的Total
字段。SUM()
用于对多行进行聚合。你在一行的范围内。要将这些字段添加到一起,只需将它们转换为INT
并添加即可
Insert MyTbl
(Mon, Tue, Weds, Thurs, Fri, Sat, Sun, Total)
Values ('1', '2', '3', '4', '5', '6', '7',
Convert(Varchar, (1 + 2 + 3 + 4 + 5 + 6 + 7)));
理想情况下,您应该将这些值存储为其适当的数据类型(INT
)
更理想的解决方案是在表上创建一个计算列,并将其定义为其他字段的总和:
例如:
这样做,您就不必担心插入总数或使其保持最新。SUM()
用于对多行进行聚合。你在一行的范围内。要将这些字段添加到一起,只需将它们转换为INT
并添加即可
Insert MyTbl
(Mon, Tue, Weds, Thurs, Fri, Sat, Sun, Total)
Values ('1', '2', '3', '4', '5', '6', '7',
Convert(Varchar, (1 + 2 + 3 + 4 + 5 + 6 + 7)));
理想情况下,您应该将这些值存储为其适当的数据类型(INT
)
更理想的解决方案是在表上创建一个计算列,并将其定义为其他字段的总和:
例如:
这样做,您就不必担心插入总计或使其保持最新状态。您有能力修改表的定义吗?带周天数的表的名称是什么?它们在一个表中,对吗?您是否尝试使用运算符+对列求和?数值(“[Mon]”、“[Tues]”、“[Weds]”、“[Thurs]”、“[Fri]”、“[Sat]”、“[Sun]”、“[Mon]”、“+”[Tues]”、“[Weds]”、“+”[Thurs]”、“[Fri]”、“+”[Sat]”、[Sun]”)RMH我确实这样做了,但收到一条错误消息,让我再试一次,如果没有,@Theessia给了我一个主意,我可以在插入后立即运行更新查询,读取天数值,并在初始插入完成后更新总数。始终使用最合适的数据类型-为什么应该包含工作小时数数值的列存储为varchar
?!?真的没有任何意义(也会阻止你“求和”它们!)你有能力修改表的定义吗?周天数表的名称是什么?它们在一个表中,对吗?您是否尝试使用运算符+对列求和?数值(“[Mon]”、“[Tues]”、“[Weds]”、“[Thurs]”、“[Fri]”、“[Sat]”、“[Sun]”、“[Mon]”、“+”[Tues]”、“[Weds]”、“+”[Thurs]”、“[Fri]”、“+”[Sat]”、[Sun]”)RMH我确实这样做了,但收到一条错误消息,让我再试一次,如果没有,@Theessia给了我一个主意,我可以在插入后立即运行更新查询,读取天数值,并在初始插入完成后更新总数。始终使用最合适的数据类型-为什么应该包含工作小时数数值的列存储为varchar
?!?确实没有任何意义(也会阻止你“求和”它们!)顶部的示例很有效,但它插入了我的总计1111111
给定每天的样本值1
,您在添加字符串,而不是插入7
@AlexP-删除数字周围的引号或将其转换为INT
。(例如,'1'+'1'='11'
vs1+1=2
)掌心——在知道的人解释之后,这是如此明显。非常感谢你,这很有效!你在顶部的例子很有效,但是如果每天的样本值为1
,它将我的总数作为1111111
插入,而不是插入7
@AlexP你在添加字符串-删除数字周围的引号或将其转换为INT
。(例如,'1'+'1'='11'
vs1+1=2
)掌心——在知道的人解释之后,这是如此明显。非常感谢你,这很有效!