Мы можем попробовать объединить таблицу календаря, содержащую все годы, которые будут отображаться в вашей таблице:
WITH years AS (
SELECT 2014 AS year UNION ALL
SELECT 2015 UNION ALL
SELECT 2016 UNION ALL
SELECT 2017 UNION ALL
SELECT 2018
)
SELECT
t2.id,
t1.year
FROM years t1
INNER JOIN yourTable t2
ON t1.year BETWEEN DATE_PART('year', t2.start_date) AND DATE_PART('year', t2.end_date)
ORDER BY
t2.id,
t1.year;
![enter image description here](https://i.stack.imgur.com/cb0Rw.png)
Демо
Примечание. Используйте DATE_PART(year, t2.start_date)
для Redshift, где компонент datetime не заключает в одинарные кавычки.