sql - 从表中的特定行插入计算数据并将其移动到 SQL Server 中另一个表的特定行中
问题描述
我被困在将数据从一个表移动到 sql server 中的另一个表中好几天了(我还是新手)。因此,如果我从表的列中的特定行计算数据的总和(例如:产品 a 的总和),我如何将计算的数据移动到具有相同产品但在另一个表中的列中的另一个特定行?
解决方案
根据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
小提琴以查看整个操作。
推荐阅读
- woocommerce - 将内容添加到 Woocommerce 管理报告中的自定义列
- ios - AVPlayer DecoderNotFound (-11833)。iOS 模拟器支持的编解码器?
- android - 如何获取在 Xamarin.Droid 项目的另一个类中创建的 Intent 的 MainActivity?
- python - 使用 matplotlib 输出与源文件相同图像大小的文件
- c# - 使用字符串路径(例如“category.object.parameter”)获取 YAMLDotNet/SharpYAML 节点
- angular5 - Angular 5 服务被重新实例化
- python - 如何输入公式并得到结果?
- c++ - Make zmqpp::socket::connect a std::future
- vba - VBA:带有 INDEX MATCH 的循环不会转到下一个值
- elasticsearch - 从 2 倍到 5 倍的 Elasticsearch 映射