SQL合并具有相同维度的多个表的各个字段
(2018-11-24 19:56:21)
标签:
oracleitsql数据分析 |
分类: 数据仓库 |
BY JSC_KEVIN
需求场景
表TB1:
project |
budget |
p1 |
100 |
p2 |
200 |
project |
benefit |
p1 |
10 |
p2 |
20 |
project |
days |
p1 |
1 |
p3 |
3 |
现在需要用SQL把上述3个表的各个项目属性合并到一张表,如下图:
project |
budget |
benefit |
days |
p1 |
100 |
10 |
1 |
p2 |
200 |
20 |
|
p3 |
3 |
实现方法
以下SQL代码以Oracle数据库作为运行环境
方法一:使用全连接FULL JOIN
select coalesce(TB1.project, TB2.project, TB3.project) as project
from TB1
full join TB2 on TB1.project = TB2.project
full join TB3 on TB1.project = TB3.project or TB2.project = TB3.project
方法二:使用左连接LEFT JOIN
WITH TB0 as(
select distinct project from(
select TB0.project
from TB0
left join TB1 on TB0.project = TB1.project
left join TB2 on TB0.project = TB2.project
left join TB3 on TB0.project = TB3.project
两种方法的对比
1、当表比较多字段比较多的时候,方法一会报奇怪的错误,报错编码为ORA-00600;
2、方法二运行速度比方法一快很多,特别是当表特别多的时候会比较明显;
综上所述,推荐使用方法二
如需沟通讨论,可联系QQ:2622487640,本文版权归智扬信达所有,转载请注明出处。