Вы можете выбрать самое текущее состояние игрока, используя функцию окна SQL, чтобы упорядочить каждого игрока по season
.Затем вам необходимо присоединить информационную таблицу к таблице couples
для каждого человека в паре.
actor_latest
CTE
ID FIRSTNAME LASTNAME GENDER SEASON LAST_CHANGE
123 Jon Targaryen Male 7 1
123 Jon Snow Male 6 2
456 Daenerys Targaryen Female 6 1
Результирующий SQL
with actor_latest (id, firstname,lastname,gender,season, last_change) as (
select
id
, firstname
, lastname
, gender
, season
, rank() over (partition by id order by season desc) as last_change
from info
)
select
left_partner.firstname as firstname_1
, left_partner.lastname as lastname_1
, left_partner.gender as gender_1
, left_partner.season as season_1
, right_partner.firstname as firstname_2
, right_partner.lastname as lastname_2
, right_partner.gender as gender_2
, right_partner.season as season_2
from
couples c
join actor_latest left_partner on c.id_1 = left_partner.id and left_partner.last_change=1
join actor_latest right_partner on c.id_2 = right_partner.id and left_partner.last_change=1
Результаты
FIRSTNAME_1 LASTNAME_1 GENDER_1 SEASON_1 FIRSTNAME_2 LASTNAME_2 GENDER_2 SEASON_2
Jon Targaryen Male 7 Daenerys Targaryen Female 6
SQL Fiddle