Похоже, что FULL JOIN
, вероятно, то, что вы хотите. Он включает все строки из обоих операндов, объединяющих строки, которые выполняют выражение в предложении ON
. Если в другом операнде нет подходящей строки партнера, столбцы другого операнда заполняются NULL
. Вот почему coalesce()
необходимо, чтобы получить год или месяц.
SELECT coalesce (x1.year, x2.year) year,
coalesce (x1.month, x2.month) month,
x1.data1,
x1.data2,
x2.data3,
x2.data4
FROM (<your first grouping query>) x1
FULL JOIN (<your second grouping query>) x2
ON x2.year = x1.year
AND x2.month = x1.month;
Замените <your first grouping query>
и <your second grouping query>
на ваш первый или второй запрос соответственно.