Я думаю, что самостоятельное объединение (с использованием подзапросов) обеспечивает самое ясное решение:
SELECT
Arts.CountryName,
Arts.Yr AS Arts,
Academy.Yr AS Academy
FROM
(
SELECT Yr, CountryName, Activity
FROM CountryDtls WHERE Activity = 'Arts'
) AS Arts
INNER JOIN
(
SELECT Yr, CountryName, Activity
FROM CountryDtls WHERE Activity = 'Academy'
) AS Academy ON
Academy.CountryName = Arts.CountryName
WHERE Arts.Yr <> Academy.Yr
Если у вас MySQL ≥ 8.0, вы можете использовать CTE, чтобы сделать его немного более читабельным:
WITH
Arts AS
(
SELECT yr, CountryName, Activity
FROM CountryDtls WHERE Activity = 'Arts'
),
Academy AS
(
SELECT yr, CountryName, Activity
FROM CountryDtls WHERE Activity = 'Academy'
)
SELECT
Arts.CountryName,
Arts.Yr AS Arts,
Academy.Yr AS Academy
FROM Arts INNER JOIN Academy ON Academy.CountryName = Arts.CountryName
WHERE Arts.Yr <> Academy.Yr