Я бы сделал бы это в программном обеспечении , которое выполняет запрос, в отличие от самого запроса.
Я делал такие вещи (например, в Oracle), используя циклы forв SQL (без сомнения, в Postgres есть подобные вещи), однако я пришел к выводу, что это был неправильный подход.Решение было труднее поддерживать, чем если бы я просто написал код на языке программирования приложения.
SQL возвращает данные, которые существуют, и оперирует данными, которые существуют, и в этом случае нет данныхза рассматриваемый год.Вот почему не стоит пытаться заставить SQL делать это.Просто спросите SQL для данных, которые у вас есть, и когда вы генерируете выходные данные на своем языке программирования для пользователя (например, таблица HTML), затем добавьте цикл for для итерации между первым и последним годом и выведите ноль, если результата нет.