C# 在Transact-SQL上:可以生成一条语句来创建一个新列,同时使用来自同一表的另一列的数据。
在Transact-SQL上:如果要创建一条语句将列添加到当前活动表中,则新添加的列将从同一表的另一列获取数据。它将在每一行上添加数据,并在新列上汇总 更具体地说, 我在一家生产红薯薯条的公司工作,我们用标签来描述每个盒子的内容 我有一个表格,当打印标签时,表格会更新和填充,标签会放在每个盒子上;所以标签数量==我们生产的盒子数量。表中有一列描述每个箱子的重量;命名为[CaseWeight]的列C# 在Transact-SQL上:可以生成一条语句来创建一个新列,同时使用来自同一表的另一列的数据。,c#,sql,database,tsql,sql-server-2012,C#,Sql,Database,Tsql,Sql Server 2012,在Transact-SQL上:如果要创建一条语句将列添加到当前活动表中,则新添加的列将从同一表的另一列获取数据。它将在每一行上添加数据,并在新列上汇总 更具体地说, 我在一家生产红薯薯条的公司工作,我们用标签来描述每个盒子的内容 我有一个表格,当打印标签时,表格会更新和填充,标签会放在每个盒子上;所以标签数量==我们生产的盒子数量。表中有一列描述每个箱子的重量;命名为[CaseWeight]的列 我想把这个casewweight列在一个新列上做一个Sum[casewweight],称之为tota
我想把这个casewweight列在一个新列上做一个Sum[casewweight],称之为total pounds。但仍然可以看到表中的其余列 您可以使用具有窗口功能的视图:
create view v_t as
select t.*, sum(weight) over () as total_pounds
from t;
您不能将窗口函数作为生成的列放入,因此这可能是最好的方法。您可以将视图与窗口函数一起使用:
create view v_t as
select t.*, sum(weight) over () as total_pounds
from t;
无法将窗口函数作为生成的列放入,因此这可能是最好的方法。若要将列添加到表中,可能需要删除该表,具体取决于服务器设置。在这种情况下,我要做的是将表中的数据备份到另一个表中,然后从MyTable中选择*到MyTableBackup。然后我删除表并使用新列重新创建它注意:在删除和重新创建表时,不要忘记重新创建索引和键!。然后我从备份表插入到新表。在求和时,您可以按插入进行分组。因此,如果您想要订单中每个包裹的重量总和,您可以执行以下操作:
SELECT SUM(CaseWeight) AS TotalPounds FROM MyTableBackup GROUP BY OrderNumber
<>你可以把它放在选择的中间:
INSERT INTO MyTable
SELECT
bak.OrderNumber
,bak.NumberOfCases
,bak.CaseWeight
,(SELECT SUM(CaseWeight) FROM MyTableBackup b WHERE b.OrderNumber = bak.OrderNumber GROUP BY OrderNumber) AS TotalPounds
FROM MyTableBackup bak
只需确保在执行拖放和插入操作之前测试查询的select部分。若要向表中添加列,可能需要删除表,具体取决于服务器设置。在这种情况下,我要做的是将表中的数据备份到另一个表中,然后从MyTable中选择*到MyTableBackup。然后我删除表并使用新列重新创建它注意:在删除和重新创建表时,不要忘记重新创建索引和键!。然后我从备份表插入到新表。在求和时,您可以按插入进行分组。因此,如果您想要订单中每个包裹的重量总和,您可以执行以下操作:
SELECT SUM(CaseWeight) AS TotalPounds FROM MyTableBackup GROUP BY OrderNumber
<>你可以把它放在选择的中间:
INSERT INTO MyTable
SELECT
bak.OrderNumber
,bak.NumberOfCases
,bak.CaseWeight
,(SELECT SUM(CaseWeight) FROM MyTableBackup b WHERE b.OrderNumber = bak.OrderNumber GROUP BY OrderNumber) AS TotalPounds
FROM MyTableBackup bak
只需确保在执行拖放和插入操作之前测试查询的select部分。我在考虑可能采取另一种方法,可能使用连接,例如自连接。它允许我将表本身连接起来。但我对创建自连接语句不太熟悉,所以我对它的样子有点困惑。@BayronPerdomo。不需要自联接。窗口函数通常更快。我在考虑可能采取另一种方法,可能使用连接,例如自连接。它允许我将表本身连接起来。但我对创建自连接语句不太熟悉,所以我对它的样子有点困惑。@BayronPerdomo。不需要自联接。窗口功能通常更快。另外,在开始之前,请确保在执行类似操作之前有一个有效的备份!另外,在这之前,请先说一句显而易见的话——在做类似的事情之前,请确保您有一个有效的备份!