Поскольку вы ищете диапазон номеров года, почему бы просто не использовать МЕЖДУ?
SELECT *
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date - interval '2' year) AND EXTRACT(year FROM current_date)
Но, как отметил @dnoeth в комментариях.
Чтобы избежать ошибки при запуске 29 февраля, использование INTERVAL может быть не самым безопасным методом.
Но просто вычесть из номера года не так уж и плохо.
SELECT *
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date)-2 AND EXTRACT(year FROM current_date)
Также обратите внимание, что такая ошибка может возникать при выборе более 1 столбца в запросе для IN
Например, это не получится:
SELECT * FROM Table1
WHERE Col1 IN (SELECT Col1, Col2 FROM Tabel2)
Так что, если бы вы использовали запрос для данных с *
, это все равно привело бы к этой ошибке.