【问题标题】:Joining tables with common columns in Oracle SQL在 Oracle SQL 中连接具有公共列的表
【发布时间】:2016-06-27 14:36:05
【问题描述】:

我有 2 张桌子,如下所示。 表A:

Col1 Col2 Col3
 3    6    300
 2    3    400
 3    5    200

这是表B:

Col1 Col2 Col4
 3    5    500
 3    7    900
 2    4    300
 2    3    100

我想要的输出是:表C

Col1 Col2 Col3 Col4
 3    5    200  500
 3    7    0    900
 2    4    0    300
 2    3    400  100
 3    6    300  0

col3 和 col4 中的值是 col1 和 col2 中值的函数。我希望加入表 A 和 B,如下例所示。我已经尝试过完全外连接,但它不会在没有记录的地方返回零,它会返回两个表中的所有列。如何获得如图所示的输出?谢谢。

【问题讨论】:

  • 这是在开玩笑吗?你有 HTML 表或 SQL 表吗?
  • SQL 表。我是社区新手,不知道如何以更好的方式显示表格。

标签: sql oracle


【解决方案1】:

全外连接是个好主意,使用 NVL 将空值替换为 0

select NVL(t1.col1,t2.col1), NVL(t1.col2,t2.col2), NVL(col3,0), NVL(col4,0)
from t1
full outer join t2
on t1.col1 = t2.col1 and t1.col2 = t2.col2

与另一张桌子:

select NVL(NVL(t1.col1,t2.col1),t3.col1), 
       NVL(NVL(t1.col2,t2.col2),t3.col2), 
       NVL(col3,0), NVL(col4,0), NVL(col5,0)
from t1
full outer join t2
on t1.col1 = t2.col1 and t1.col2 = t2.col2
full outer join t3
on t1.col1 = t3.col1 and t1.col2 = t3.col2
   and t2.col1 = t3.col1 and t2.col2 = t3.col2

对不起,我没试过……如果有问题请告诉我。

【讨论】:

  • 我不知道您是如何使用一堆 HTML 表格编写该查询的,但我对此表示赞同。
  • 可能点击了run snippet按钮..@TimBiegeleisen
  • 感谢您的帮助。如果我现在以类似的方式使用 col1、col2 和 col5 加入第三个表,该查询将如何变化?
猜你喜欢
  • 2019-09-25
  • 1970-01-01
  • 2022-08-19
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多