sql合并两个table并格式化
sql merge two table and format
TABLE SRN
id
ACC
DEPART
1
A
IT
2
A
FINANCE
3
A
AEROSPACE
4
B
IT
5
B
FINANCE
6
B
AEROSPACE
Table 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
如何格式化表格以获得最终结果。我尝试使用左连接,但不确定如何将格式更改为所需的结果。
您可以将 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;
TABLE SRN
id | ACC | DEPART |
---|---|---|
1 | A | IT |
2 | A | FINANCE |
3 | A | AEROSPACE |
4 | B | IT |
5 | B | FINANCE |
6 | B | AEROSPACE |
Table 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 |
如何格式化表格以获得最终结果。我尝试使用左连接,但不确定如何将格式更改为所需的结果。
您可以将 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;