sql合并两个表并格式化
Posted
技术标签:
【中文标题】sql合并两个表并格式化【英文标题】:sql merge two table and format 【发布时间】:2021-03-23 14:41:30 【问题描述】:表 SRN
id | ACC | DEPART |
---|---|---|
1 | A | IT |
2 | A | FINANCE |
3 | A | AEROSPACE |
4 | B | IT |
5 | B | FINANCE |
6 | B | AEROSPACE |
表 TRN
id | ACC | IT POPULATION | FINANCE POPULATION | AEROSPACE POPULATION |
---|---|---|---|---|
1 | A | 10 | 20 | 30 |
2 | B | 95 | 105 | 110 |
最终结果
ACC | DEPART | IT POPULATION | FINANCE POPULATION | AEROSPACE POPULATION |
---|---|---|---|---|
A | IT | 10 | 0 | 0 |
A | FINANCE | 0 | 20 | 0 |
A | AEROSPACE | 0 | 0 | 30 |
B | IT | 95 | 0 | 0 |
B | FINANCE | 0 | 105 | 0 |
B | AEROSPACE | 0 | 0 | 110 |
如何格式化表格以获得最终结果。我尝试使用左连接,但不确定如何将格式更改为所需的结果。
【问题讨论】:
请发布您的查询。 请看:Why should I provide an MCRE for what seems to me to be a very simple SQL query? 使用条件聚合。 【参考方案1】:您可以将left join
与case
一起使用:
select s.acc,
s.depart,
case when s.depart = "IT" then t.it_pop else 0 end `IT POPULATION`,
case when s.depart = "FINANCE" then t.fin_pop else 0 end `FINANCE POPULATION`,
case when s.depart = "AEROSPACE" then t.aer_pop else 0 end `AEROSPACE POPULATION`
from srn s left join trn t on s.acc = t.acc;
【讨论】:
以上是关于sql合并两个表并格式化的主要内容,如果未能解决你的问题,请参考以下文章
数据步骤/SQL 连接/合并/联合 2 数据集/表并删除相同的行/观察
Leetcode练习(Python):链表类:第21题:合并两个有序链表:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。