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'
vs
1+1=2
)掌心——在知道的人解释之后,这是如此明显。非常感谢你,这很有效!你在顶部的例子很有效,但是如果每天的样本值为
1
,它将
我的总数作为
1111111
插入,而不是插入
7
@AlexP你在添加字符串-删除数字周围的引号或
将其转换为
INT
。(例如,
'1'+'1'='11'
vs
1+1=2
)掌心——在知道的人解释之后,这是如此明显。非常感谢你,这很有效!