SQL соединение, но по вертикали - PullRequest
0 голосов
/ 27 августа 2018

недавно началось с простых запросов в SQL

Мне было интересно, есть ли возможность добавлять данные по вертикали, как это делает "объединение" по горизонтали

У меня есть два варианта, которые я хочу объединить

month year data1 data2 grouped by month, year
month year data3 data4 grouped by month, year

я пытаюсь заархивировать

month year data1 data2 data3 data4

Есть ли какая-нибудь функция, работающая как объединение, чтобы архивировать это? Я пытался сделать это с "присоединиться", но ужасно потерпел неудачу

1 Ответ

0 голосов
/ 27 августа 2018

Похоже, что 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> на ваш первый или второй запрос соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...