Попробуйте использовать агрегирование с логикой поворота:
SELECT
City,
AVG(CASE WHEN CONVERT(varchar(4), Date, 120) = '2017' THEN Price END) AS Avg2017,
AVG(CASE WHEN CONVERT(varchar(4), Date, 120) = '2018' THEN Price END) AS Avg2018,
AVG(CASE WHEN CONVERT(varchar(4), Date, 120) = '2019' THEN Price END) AS Avg2019
FROM yourTable
WHERE
CONVERT(varchar(4), Date, 120) IN ('2017', '2018', '2019')
GROUP BY
City;