如何连接两个表以获得以下结果?
Posted
技术标签:
【中文标题】如何连接两个表以获得以下结果?【英文标题】:How to join two tables to get the following result? 【发布时间】:2015-11-20 02:27:43 【问题描述】:我想加入两个表。
TABLE_A
GROUP0 GROUP1 SUM_A
---------------------------
01 A 100
01 B 200
04 D 700
TABLE_B
GROUP0 GROUP1 SUM_B
---------------------------
01 300
01 A 350
02 B 400
03 C 500
如何加入表格得到以下结果?
GROUP0 GROUP1 SUM_A SUM_B
------------------------------------------------
01 0 300
01 A 100 350
01 B 200 0
02 B 0 400
03 C 0 500
04 D 700 0
【问题讨论】:
第一个表中的 01/B 发生了什么? 对不起先生,我想我有一些错误,现在是正确的。 我有问题。如果列 Value 为 NULL,则不能匹配列值。 【参考方案1】:您想要第二个表中的所有内容,然后在第一个表中匹配行或新的group0
。
我认为这是join
的逻辑:
select coalesce(t1.group0, t2.group0) as group0,
coalesce(t1.group1, t2.group1) as group1,
t1.sum_a, t2.sum_b
from table1 t1 full outer join
table2 t2
on t1.group0 = t2.group0
where (t2.group0 is not null and (t1.group1 = t2.group1 or t1.group0 is null)) or
t2.group0 is null;
union all
使这个逻辑更容易:
select t2.group0, t2.group1, t1.sum_a, t2.sum_b
from table2 t2 left join
table1 t1
on t2.group0 = t1.group0 and t2.group1 = t1.group1
union all
select t1.group1, t1.group1, t1.suma, 0
from table1
where not exists (select 1 from table2 t2 where t2.group0 = t1.group0);
编辑:
修改后的问题与原始问题有很大不同。那是一个简单的full outer join
:
select coalesce(t1.group0, t2.group0) as group0,
coalesce(t1.group1, t2.group1) as group1,
coalesce(t1.sum_a, 0) as sum_a, coalesce(t2.sum_b, 0) as sum_b
from table1 t1 full outer join
table2 t2
on t1.group0 = t2.group0 and t1.group1 = t2.group1;
【讨论】:
我想要第二个表中的所有内容,1. 匹配 group0 和 group1 2. 如果匹配 -> 在该行中添加值,3. 如果不匹配 -> 添加新行以上是关于如何连接两个表以获得以下结果?的主要内容,如果未能解决你的问题,请参考以下文章