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 joincase 一起使用:

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 查询合并三个表并获得一个输出

使用两个日期列合并两个表并复制行

数据步骤/SQL 连接/合并/联合 2 数据集/表并删除相同的行/观察

连接两个表并在一行中合并多个关联

Leetcode练习(Python):链表类:第21题:合并两个有序链表:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

什么是通用 SQL 函数?