sql-server - 如何在需要按一个键列分组的 3 个表中加入和求和值
问题描述
我正在尝试加入 3 个表(tableA、tableB、tableC)都有 3 个字段(invoice、productClass、value)。tableA 和 tableB 在 productClass 字段中没有值,而 tableC 在 Value 字段中没有值。所有表都有共同的值 Invoice 但不同的 ProductClass 并且结果应该基于 invoices 和 ProductClass 求和值
create table tableA (
Invoice varchar(100),
ProductClass varchar(100),
Value int
)
create table tableB (
Invoice varchar(100),
ProductClass varchar(100),
Value int
)
create table tableC (
Invoice varchar(100),
ProductClass varchar(100),
Value int
)
insert into tableA
values
('001','',10),
('002','',20),
('003','',30),
('004','',40)
insert into tableB
values
('001','',20),
('002','',30),
('003','',40),
('004','',50)
insert into tableC
values
('001','aaa',null),
('002','aab',null),
('003','aac',null),
('004','aad',null)
select Invoice,ProductClass,sum(Value)
from(
select * from tableA
union
select * from tableB
union
select * from tableC
)tableD
group by Invoice,ProductClass
我希望结果会返回
Invoice - 001,002,003,004
ProductClass - aaa,aab,aac,aad
Value - 30,50,70,90
解决方案
如果它具有类似或s 的值,则可以使用max()
for :ProductClass
blank
null
select Invoice, max(ProductClass) as ProductClass, sum(Value) as Value
from(select * from tableA
union
select * from tableB
union
select * from tableC
)tableD
group by Invoice;
推荐阅读
- visual-studio-code - 使用 Visual Studio Code 运行 python 代码时出现“滚动条错误:空令牌”
- python - 根据标签在DataFrame中查找索引位置
- fzf - 如何指定 fzf --preview 应该只在当前目录中查找文件?
- c# - 无法弄清楚如何在 WebService 中使用参数 MaxReceivedMessageSize
- python - Django smart_str 'NoneType' 对象没有属性
- image - 使用opencv将图像保存在不同的文件夹中
- cypress - 赛普拉斯运行后如何查看获取历史记录和日志
- java - PiTest Mutation Coverage-无法杀死条件边界
- laravel - SQLSTATE [42S02]:未找到基表或视图:1146 表 'blog.roles' 不存在
- php - 如果单个帖子的类别名称包含特定单词,则在 Wordpress 帖子中输出特定链接