【发布时间】:2018-01-04 16:44:37
【问题描述】:
我有 2 张桌子。
表1:
Name Date Project Hrs
VKR 0727 X 8
VKR 0728 A 4
VKR 0728 B 4
VKR 0729 C 8
表2:
Name Date Project Hrs
VKR 0728 123 8
VKR 0729 234 8
VKR 0730 345 8
我需要在名称和日期上加入这些表,我期望的输出应该如下所示:
Name Date Table1.Project Table1.Hrs Table2.Project Table2.Hrs
VKR 0727 X 8
VKR 0728 A 4 123 8
VKR 0728 B 4
VKR 0729 C 8 234 8
VKR 0730 345 8
我尝试过使用 FULL OUTER JOIN 但这似乎不起作用。这是我的查询
Select nvl(T1.Name,T2.Name), nvl(T1.Date,T2.Date), T1.Project, T1.Hrs,
T2.Project, T2.Hrs from Table1 T1
full outer join Table2 T2 on T1.Name = T2.Name
and T1.Date = T2.Date
我面临的问题是,如果表 1 中有 2 行相同的名称和日期,表 2 中有 1 行相同的键,我会从表 2 中得到 2 行,如下所示:
Name Date Table1.Project Table1.Hrs Table2.Project Table2.Hrs
VKR 0728 A 4 123 8
VKR 0728 B 4 123 8
我不想要的。
感谢任何帮助。提前致谢
【问题讨论】:
-
您可以先阅读
JOINplsql 文档来理解它吗?如果您真的不知道如何使用连接,请尝试理解它,因为连接表发生在许多数据库查询中...... -
@KarelG - 你是否完整地阅读了这个问题.. 即使在使用
FULL OUTER JOIN之后,所有记录都没有返回,为什么它像Inner join那样工作,这就是问题所在。 -
你确定没有
Where子句 -
这是完整的陈述吗?如果是,我很确定你不会得到你发布的结果。
标签: sql oracle join plsql full-outer-join