在不同行上具有多联接的SQL输出

时间:2019-03-20 22:25:28

标签: sql oracle

我尝试将2个不同的数据集与不同的列连接在一起,当我进行连接时,会得到重复的结果。

我的输入数据集1有实际数据:

Cust_id  Year  sales
----------------------
1        2016  679862
1        2017  705365
1        2018  195662
1        2019  201234
2        2016   51074
2        2017   50611
2        2018   19070
2        2019   20123 

我的输入数据集2带有估算数据:

Cust_id  Year  salesest
-------------------------
1        2018  779862
1        2019  125662
2        2017   23456
2        2018   32856
2        2019   26602

所需的输出:

Cust_id  Year  sales  salesest
-------------------------------
1        2016  679862  null
1        2017  705365  null
1        2018  195662  779862
1        2019  201234  125662
2        2016   51074  null
2        2017   50611   23456
2        2018   19070   32856
2        2019   20123   26602

这是我尝试过的:

select 
    a.*, b.salesest
from 
    tab1 a, tab2 b
where
    a.Cust_id = b.Cust_id

2 个答案:

答案 0 :(得分:1)

您想要一个LEFT JOIN。正确的语法是:

select a.*, e.salesest
from actuals a left join
     estimates e
     on a.Cust_id = e.Cust_id and
        a.year = e.year;

答案 1 :(得分:0)

您还需要指定年份-在另一个表中没有相应年份的时候进行外部联接。

select a.*, b.salesest
frpm tab1 a, tab2 b
where
a.Cust_id=b.Cust_id
AND a.YEAR = b.YEAR (+)