Вывод SQL с множественным объединением в разных строках - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь объединить 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 ]

1 голос
/ 21 марта 2019

Вы хотите 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;
0 голосов
/ 21 марта 2019

вам также необходимо указать год - и выполнить внешнее объединение для случаев, когда в другой таблице нет соответствующего года.

select a.*, b.salesest
frpm tab1 a, tab2 b
where
a.Cust_id=b.Cust_id
AND a.YEAR = b.YEAR (+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...