Вы можете почти сгенерировать предлагаемое изменение из исходных таблиц, используя самостоятельное соединение на outcome
таблице:
select o1.team_id team_id_1,
o2.team_id team_id_2,
o1.score score_1,
o2.score score_2,
o1.match_id match_id
from outcome o1
inner join outcome o2 on o1.match_id = o2.match_id and o1.team_id < o2.team_id
Конечно, информацию для дома и на выезде невозможно получить, поэтому предложенный вами альтернативный подход может оказаться лучше. Кроме того, обратите внимание на условие o1.team_id < o2.team_id
, которое избавляет от избыточных данных симметричного совпадения (на самом деле оно избавляется от той же строки outcome
, соединяемой с самим собой, что можно рассматривать как более важный аспект).
В любом случае, используя этот выбор как часть вашего объединения, вы можете генерировать одну строку за матч.