首页 > 解决方案 > 从表中的特定行插入计算数据并将其移动到 SQL Server 中另一个表的特定行中

问题描述

我被困在将数据从一个表移动到 sql server 中的另一个表中好几天了(我还是新手)。因此,如果我从表的列中的特定行计算数据的总和(例如:产品 a 的总和),我如何将计算的数据移动到具有相同产品但在另一个表中的列中的另一个特定行?

标签: sqlsql-server

解决方案


根据id目标表中是否已经存在产品(我在示例数据中使用了列),您将需要以下方法之一。

样本数据

-- source table
create table tblValues
(
  id int,
  value int
);

insert into tblValues (id, value) values
(100, 1),
(100, 2),
(100, 3),
(200, 4),
(200, 5),
(200, 6),
(300, 7);

-- target table
create table tblSums
(
  id int,
  sumValue int
);

解决方案 1

insert into tblSums (id, sumValue)
select v.id, sum(v.value) as idSum
from tblValues v
group by v.id;

select * from tblSums; --> sums for id 100 / 200 / 300

示例数据更改

-- reset
truncate table tblSums;

-- populate id column of tblSums
insert into tblSums (id) values
(100),
(200);

解决方案 2

update s
set s.sumValue = v2.sumValue
from tblSums s
cross apply ( select sum(v.value) as sumValue
              from tblValues v
              where v.id = s.id
              group by v.id ) v2;

select * from tblSums; --> sums for id 100 / 200

小提琴以查看整个操作。


推荐阅读