У меня есть 2 таблицы, для которых я хочу выполнить полное внешнее соединение в MS Access.
Скажем, у меня есть Таблица A , которая выглядит следующим образом:
A.ID | A.Value | A.DATE
--------+-----------+----------
1 | 30 | 05/2018
1 | 28 | 06/2018
1 | 26 | 07/2018
2 | 250 | 04/2018
2 | 252 | 05/2018
2 | 240 | 06/2018
И Таблица B , которая выглядит следующим образом:
B.ID | B.FCST | B.OUTDATE
--------+-----------+-----------
1 | 35 | 06/2018
1 | 33 | 07/2018
1 | 30 | 08/2018
2 | 300 | 06/2018
2 | 280 | 07/2018
2 | 260 | 08/2018
И для этого мне нужно выполнить соединения и союзы:
A.ID | A.Value | A.DATE | B.FCST | B.OUTDATE
--------+-----------+---------+-----------+------------
1 | 30 | 05/2018 | - | -
1 | 28 | 06/2018 | 35 | 06/2018
1 | 26 | 07/2018 | 33 | 07/2018
1 | - | - | 30 | 08/2018
2 | 250 | 04/2018 | - | -
2 | 252 | 05/2018 | - | -
2 | 240 | 06/2018 | 300 | 06/2018
2 | - | - | 280 | 07/2018
2 | - | - | 260 | 08/2018
Поэтому мне нужно выполнить внутреннее соединение с A.ID = B.ID и A.DATE = B.OUTDATEи затем каким-то образом получить «более ранние» данные из Table.A в «Sit on top» внутренних объединенных данных, а «более поздние» данные из Table.B сделать противоположное.Пока это моя попытка:
Select A.ID, A.Value, A.DATE, B.FCST, B.OUTDATE
FROM Table.A JOIN Table.B ON A.ID = B.ID AND A.DATE = B.OUTDATE
UNION ALL
Select A.ID, A.Value, A.DATE, B.FCST, B.OUTDATE
FROM Table.A LEFT JOIN Table.B ON A.ID = B.ID;
WHERE B.ID IS NULL
UNION ALL
Select A.ID, A.Value, A.DATE, B.FCST, B.OUTDATE
FROM Table.A RIGHT JOIN Table.B ON A.ID = B.ID
WHERE A.ID IS NULL
ORDER BY A.ID ASC;
Но я пропустил отметку, как кажется.Я получаю повторяющиеся строки, и это выглядит как внутреннее соединение.Я с удовольствием приму любой совет, чтобы помочь сделать это правильно.