两个如何在Oracle SQL中联接两个表

时间:2019-01-17 23:32:26

标签: oracle join

我是Oracle SQL的新手,我需要以下方面的帮助:

假设我有一张桌子,其中包含一年中的所有星期,例如:

Tensor shapes before import map
Tensor("Placeholder:0", shape=(?, ?, ?, 3), dtype=float32)
Tensor("pool2/MaxPool:0", shape=(?, ?, ?, 16), dtype=float32)
Tensor shapes after import map
Tensor("Placeholder:0", shape=(1, 320, 320, 3), dtype=float32)
Tensor("pool2/MaxPool:0", shape=(1, 80, 80, 16), dtype=float32)

还有一张表,其中仅列出一年中某几周的产品销售情况

ID_WEEK_YR
----------
2018011
2018012
2018013
...
2018124

我需要加入表格以获得类似的内容:

ID_PRODUCT    ID_WEEK_YR   SALES
----------    ----------  -------
TOY#1          2018083       5
TOY#1          2018051       3
TOY#1          2018043       1

应用来自Oracle SQL的典型JOIN可能性,并通过键ID_WEEK_YR进行联接,我再次获得第二张表

ID_PRODUCT    ID_WEEK_YR   SALES
----------    ----------  -------
TOY#1          2018011      null
TOY#1          2018012      null
TOY#1          2018013      null
...
TOY#1          2018043       5
...
TOY#1          2018051       1
...
TOY#1          2018083       3
...
TOY#1          2018124      null

预先感谢

1 个答案:

答案 0 :(得分:2)

您似乎已接近解决方案,您只需要将您的(内部)联接转换为左(外部)联接即可。另外,左连接表上的所有条件都必须放在ON子句中,而不是WHERE子句中。

SELECT 
    'TOY#1',
    A11.ID_WEEK_YR,   
    A12.SALES
FROM 
    WEEKS_YR A11
    LEFT JOIN  SALES_U_YR A12
        ON A11.ID_WEEK_YR=A12.ID_WEEK_YR
        AND A12.ID_PRODUCT='TOY#1'
;